如何給容器服務的Docker增加資料盤

2021-09-23 19:48:08 字數 1830 閱讀 1025

我們知道docker的資料是通過聯合檔案系統的方式儲存到磁碟上,當需要在機器上執行的容器或者映象的數量不斷增加時,有可能磁碟的大小不再滿足需求,這個時候就需要給docker的資料目錄通過增加資料盤的方式進行擴容。

docker預設的容器和映象資料儲存的目錄是在/var/lib/docker下面,可以通過du命令檢視這個目錄目前占用的磁碟的大小,例如:

# du -h --max-depth=0 /var/lib/docker

7.9g /var/lib/docker

因為很多docker的映象本身就挺大的,所以可能用不了幾個映象就會有很可觀的乙個磁碟占用,很容器就會導致磁碟空間不足,這個時候如何更換資料盤以滿足再增加映象或容器的需求,那就給docker的資料目錄增加塊資料盤吧。

1. 通過ecs控制台購買需要的配置的雲盤

2. 在ecs例項詳情頁->本例項磁碟->掛載磁碟中,選擇剛才購買的磁碟,並記錄掛載點/dev/xvd*或者/dev/vd*1. 首先在機器上執行ls -l /dev/xvd*或者ls -l /dev/vd*看到和剛才記錄的一致的磁碟id

2. 通過fdisk命令對磁碟進行分割槽,然後使用mkfs.ext4格式化磁碟,例如:

0. 如果節點上有正在執行的應用不希望中斷,需要首先對應用做遷移

swarm集群:

kubernetes集群:

1. 首先先停止docker daemon和kubelet(kubernetes集群),保證移動的時候資料完整,可以使用service kubelet stop(kubernetes集群)和service docker stop命令停止

2. 先移動docker的目錄到乙個備份的目錄,例如:mv /var/lib/docker /var/lib/docker_data

3. 然後把新的格式化好的磁碟掛載到/var/lib/docker/var/lib/kubelet目錄,例如:

echo "/dev/xvdb1    /var/lib/container/     ext4    defaults        0 0" >>/etc/fstab

echo "/var/lib/container/kubelet /var/lib/kubelet none defaults,bind 0 0" >>/etc/fstab

echo "/var/lib/container/docker /var/lib/docker none defaults,bind 0 0" >>/etc/fstab

mkdir /var/lib/docker

mount -a

4. 把之前備份的docker資料移動到新的磁碟上,例如:mv /var/lib/docker_data/* /var/lib/docker/1. 啟動kubelet(kubernetes集群)和docker daemon,命令分別是service kubelet start(kubernetes集群)和service docker start2. 執行df看到/var/lib/docker掛載到了新的磁碟上

(kubernetes集群不需要)3.docker ps看到容器沒有丟失,根據需要再啟動需要啟動的沒有restart:always標籤的容器

4. 前面遷移走的容器可以同樣適用排程的方式讓他們回歸到這個節點上面

docker 給容器設定許可權

如果預設執行容器的話,容器的預設許可權會是root級別,這會帶來很多不穩定的因素,例如容器可能修改一些只有root使用者能修改的東西,假如使用nobody的話,又會造成容器想寫入一些普通檔案,會因為沒有許可權而被宿主主機拒絕.我採用的是docker compose 設定 env 預設為.env,當然...

給Docker容器建立固定的ip

解釋 一般在分布式系統中 當a伺服器 不需要和b伺服器通訊的時候 我們指定對應的 網段 只能同乙個局域下可以訪問 1.1 建立網路 指定網段 docker network create subnet 172.18.0.0 16 mynet 1.2 建立容器 指定容器的ip docker run it...

Docker 十 如何設定Docker容器的配置

一.場景說明 在安裝docker映象並啟動執行容器例項時,我們應該要考慮到乙個很重要的問題 因為後期可能會更改配置,那麼配置檔案的如何設定最好?二.使用容器資料卷的方式將配置掛載到宿主機指定目錄 這種方式是我認為最好的方式,在建立容器時使用資料卷的方式直接將容器的配置路徑對映到宿主機指定目錄,這樣,...