這篇文章主要介紹了怎么給容器服務(wù)的Docker增加數(shù)據(jù)盤,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為襄汾企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站制作,襄汾網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
Docker 的數(shù)據(jù)是通過聯(lián)合文件系統(tǒng)的方式存儲到磁盤上,當(dāng)需要在機器上運行的容器或者鏡像的數(shù)量不斷增加時,有可能磁盤的大小不再滿足需求,這個時候就需要通過增加數(shù)據(jù)盤的方式,給 Docker的數(shù)據(jù)目錄可存儲的空間進(jìn)行擴容。
Docker默認(rèn)的容器和鏡像數(shù)據(jù)存儲的目錄是在 /var/lib/docker 下,可以通過 du 命令查看這個目錄目前占用的磁盤的大小,例如:
du -h --max-depth=0 /var/lib/docker 7.9G /var/lib/docker
因為很多 Docker 的鏡像很大,所以可能幾個鏡像就占用很大的磁盤空間,從而導(dǎo)致磁盤空間不足,通過為 Docker 的數(shù)據(jù)目錄增加數(shù)據(jù)盤的方式,可以滿足繼續(xù)增加鏡像或容器的需求。
登錄 云服務(wù)器 ECS 控制臺,購買相應(yīng)配置的云盤。
單擊 ECS實例詳情頁 > 本實例磁盤 > 掛載磁盤,選擇剛才購買的磁盤,并記錄掛載點 /dev/xvd*
或者 /dev/vd*
。根據(jù) cd 命令確定掛載點,IO 優(yōu)化實例的掛載點是 /dev/vd*
。
登錄到機器上,對剛才掛載的磁盤進(jìn)行格式化
首先在機器上執(zhí)行 ls -l /dev/xvd*
或者 ls -l /dev/vd*
看到和剛才記錄的一致的磁盤ID。
通過 fdisk 命令對磁盤進(jìn)行分區(qū),然后使用 mkfs.ext4
格式化磁盤,具體請參見 Linux 格式化和掛載數(shù)據(jù)盤,例如:
root@iZbp16h2ijt5er5wempg4sZ:~# ls -l /dev/vd* brw-rw---- 1 root disk 253, 0 Jan 5 17:44 /dev/vda brw-rw---- 1 root disk 253, 1 Jan 5 17:44 /dev/vda1 brw-rw---- 1 root disk 253, 16 Jan 5 17:55 /dev/vdb root@iZbp16h2ijt5er5wempg4sZ:~# fdisk -S 56 /dev/vdb Welcome to fdisk (util-linux 2.27.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x44e128c4. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): Created a new partition 1 of type 'Linux' and of size 20 GiB. Command (m for help): wq The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. root@iZbp16h2ijt5er5wempg4sZ:~# ll /dev/vd* brw-rw---- 1 root disk 253, 0 Jan 5 17:44 /dev/vda brw-rw---- 1 root disk 253, 1 Jan 5 17:44 /dev/vda1 brw-rw---- 1 root disk 253, 16 Jan 5 17:58 /dev/vdb brw-rw---- 1 root disk 253, 17 Jan 5 17:58 /dev/vdb1 ##新增分區(qū) root@iZbp16h2ijt5er5wempg4sZ:~# mkfs.ext4 /dev/vdb1 ##格式化 mke2fs 1.42.13 (17-May-2015) Creating filesystem with 5242624 4k blocks and 1310720 inodes Filesystem UUID: cef1625c-7533-4308-bc44-511580e3edc8 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
移動 Docker 的數(shù)據(jù)到新的磁盤
首先先停止 Docker daemon,保證移動的時候數(shù)據(jù)完整,執(zhí)行 service docker stop 命令停止 Docker daemon。
先將 Docker 默認(rèn)數(shù)據(jù)目錄下的數(shù)據(jù)移動到一個備份的目錄,例如 /var/lib/docker_data,執(zhí)行命令 mv /var/lib/docker /var/lib/docker_data。
然后把新的格式化好的磁盤掛載到 /var/lib/docker 目錄,執(zhí)行命令 echo "/dev/vdb1 /var/lib/docker ext4 defaults 0 0" >>/etc/fstab && mkdir /var/lib/docker && mount -a。
把之前備份的 Docker 數(shù)據(jù)移動到新的磁盤上,執(zhí)行命令 mv /var/lib/docker_data/* /var/lib/docker/。
啟動 Docker daemon,并檢查數(shù)據(jù)位置
啟動 Docker daemon,執(zhí)行命令 service docker start。
執(zhí)行命令 df,可以看到 /var/lib/docker 掛載到了新的磁盤上。
root@iZbp16h2ijt5er5wempg4sZ:/# df -h Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 396M 7.1M 389M 2% /run /dev/vda1 40G 2.7G 35G 8% / tmpfs 2.0G 476K 2.0G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup tmpfs 396M 0 396M 0% /run/user/0 /dev/vdb1 20G 2.1G 17G 12% /var/lib/docker ##該目錄掛在到新的磁盤上 ....
執(zhí)行命令 docker ps,查看容器是否丟失,根據(jù)需要重啟相關(guān)容器,如沒有設(shè)置 restart:always
標(biāo)簽的容器。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么給容器服務(wù)的Docker增加數(shù)據(jù)盤”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!