日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker高级应用之动态扩展容器空间大小

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker高级应用之动态扩展容器空间大小 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

docker容器默認的空間是10G,如果想指定默認容器的大小(在啟動容器的時候指定),可以在docker配置文件里通過dm.basesize參數指定,比如

docker?-d?--storage-opt?dm.basesize=20G

是指定默認的大小為20G,具體參數可以參考https://github.com/docker/docker/tree/master/daemon/graphdriver/devmapper

上面方法只是真的生成容器的時候進行的,并且修改后需要重啟docker,無法做到動態給運行容器指定大小,下面我介紹一下如何動態的擴展容器空間大小。

動態擴展的優點:

1、不需要修改docker配置,并且重啟docker服務;

2、可以直接對運行中的容器進行動態擴展(只能增,無法縮);

缺點:

1、docker所在宿主機分區的格式必須是ext2、ext3、ext4;

2、docker存儲引擎必須是devicemapper

存儲引擎查看,可以使用docker info查看

15:25:49?#?docker?info Containers:?5 Images:?62 Storage?Driver:?devicemapperPool?Name:?docker-8:17-37748738-poolData?file:?/data1/docker/devicemapper/devicemapper/dataMetadata?file:?/data1/docker/devicemapper/devicemapper/metadataData?Space?Used:?21498.9?MbData?Space?Total:?102400.0?MbMetadata?Space?Used:?13.7?MbMetadata?Space?Total:?2048.0?Mb Execution?Driver:?lxc-1.0.6 Kernel?Version:?3.10.0-123.el7.x86_64

從上面的Storage Driver可以看到我使用的引擎。

下面是動態擴展的例子:

1、新建立個test容器

15:23:48?#?docker?run?--privileged?-d??-p?22?--name='test'?docker.ops-chukong.com:5000/centos6-http:new?/usr/bin/supervisord 1716fe941926dbd0b247b85d73e83b9465322a5005edc3c6182b59a6ac0939a7 root@ip-10-10-27-221:/tmp 15:24:01?#?docker?inspect?test|grep?-i?add"IPAddress":?"172.17.0.18", root@ip-10-10-27-221:/tmp 15:24:08?#?ssh?172.17.0.18 The?authenticity?of?host?'172.17.0.18?(172.17.0.18)'?can't?be?established. RSA?key?fingerprint?is?39:7c:13:9f:d4:b0:d7:63:fc:ff:ae:e3:46:a4:bf:6b. Are?you?sure?you?want?to?continue?connecting?(yes/no)??yes Warning:?Permanently?added?'172.17.0.18'?(RSA)?to?the?list?of?known?hosts. root@172.17.0.18's?password: Last?login:?Mon?Nov?17?14:10:39?2014?from?172.17.42.1 root@1716fe941926:~ 15:24:13?#?df?-hT Filesystem???????????Type????Size??Used?Avail?Use%?Mounted?on rootfs???????????????rootfs??9.8G??470M??8.8G???5%?/ /dev/mapper/docker-8:17-37748738-1716fe941926dbd0b247b85d73e83b9465322a5005edc3c6182b59a6ac0939a7ext4????9.8G??470M??8.8G???5%?/ shm??????????????????tmpfs????64M?????0???64M???0%?/dev/shm /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/.dockerinit /dev/sda3????????????ext4????518G???30G??462G???6%?/etc/resolv.conf /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/etc/hostname /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/etc/hosts /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/.dockerenv

可以看到我運行test容器的根分區是ext4分區,容器是10G

2、使用我的腳本動態擴展容器空間

腳本內容

15:22:12?#?cat?dynamic_modify_docker_disk.sh #!/bin/bash #This?script?is?dynamic?modify?docker?container?disk #Author?Deng?Lei if?[?-z?$1?]?||?[?-z?$2?];?thenecho?"Usage:?container_name?increase_capacity"echo?"Example:?I?want?increase?11G?to?test"echo?"The?command?is:???sh?`basename?$0`?test?11"exit?1fi if?[?`docker?inspect?$1?&>>/dev/null?&&??echo?0?||?echo?1`?-eq?1?];thenecho?"The?container?$1?is?no?exist!"exit?1 fi container_id=`docker?inspect?-f?'{{?.Id?}}'?$1` now_disk=`dmsetup?table?/dev/mapper/docker-*-$container_id|awk?'{print?$2}'` disk=$(($2*1024*1024*1024/512)) if?[?$disk?-lt?$now_disk?];thenecho?"I?can't?shink?container?$1?from?$(($now_disk*512/1024/1024/1024))G?to?${2}G!I?only?modify?contanier?increase?disk!"exit?1 fi dmsetup?table?/dev/mapper/docker-*-$container_id|sed?"s/0?[0-9]*?thin/0?$disk?thin/"|dmsetup?load?/dev/mapper/docker-*-$container_id dmsetup?resume?/dev/mapper/docker-*-$container_id resize2fs?/dev/mapper/docker-*-$container_id if?[?$??-eq?0?];thenecho?"dynamic?container?$1?disk?to?${2}G?is?success!" elseecho?"dynamic?container?$1?disk?to?${2}G?is?fail!" fi

目前給test容器進行動態增加20G空間

15:24:40?#?sh?dynamic_modify_docker_disk.sh?test?20 dynamic?container?test?disk?to?20G?is?success! root@ip-10-10-27-221:/tmp 15:24:46?#?ssh?172.17.0.18 root@172.17.0.18's?password: Last?login:?Tue?Jan?20?15:24:13?2015?from?172.17.42.1 root@1716fe941926:~ 15:24:52?#?df?-hT Filesystem???????????Type????Size??Used?Avail?Use%?Mounted?on rootfs???????????????rootfs???20G??475M???19G???3%?/ /dev/mapper/docker-8:17-37748738-1716fe941926dbd0b247b85d73e83b9465322a5005edc3c6182b59a6ac0939a7ext4?????20G??475M???19G???3%?/ shm??????????????????tmpfs????64M?????0???64M???0%?/dev/shm /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/.dockerinit /dev/sda3????????????ext4????518G???30G??462G???6%?/etc/resolv.conf /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/etc/hostname /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/etc/hosts /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/.dockerenv

可以看到已經增加成功

下面在給test增加到50G

15:25:21?#?sh?dynamic_modify_docker_disk.sh?test?50 dynamic?container?test?disk?to?50G?is?success! root@ip-10-10-27-221:/tmp 15:25:24?#?ssh?172.17.0.18 root@172.17.0.18's?password: Last?login:?Tue?Jan?20?15:24:52?2015?from?172.17.42.1 root@1716fe941926:~ 15:25:27?#?df?-hT Filesystem???????????Type????Size??Used?Avail?Use%?Mounted?on rootfs???????????????rootfs???50G??480M???47G???1%?/ /dev/mapper/docker-8:17-37748738-1716fe941926dbd0b247b85d73e83b9465322a5005edc3c6182b59a6ac0939a7ext4?????50G??480M???47G???1%?/ shm??????????????????tmpfs????64M?????0???64M???0%?/dev/shm /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/.dockerinit /dev/sda3????????????ext4????518G???30G??462G???6%?/etc/resolv.conf /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/etc/hostname /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/etc/hosts /dev/sdb1????????????ext4????1.8T???30G??1.7T???2%?/.dockerenv

也可以增加成功

但我要是像縮減到30G

15:25:45?#?sh?dynamic_modify_docker_disk.sh?test?30 I?can't?shink?container?test?from?50G?to?30G!I?only?modify?contanier?increase?disk!

是無法進行縮減的,僅能進行增加操作。

至于動態增加的原理請參考http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/

FAQ:

centos 7里使用docker的時候默認存儲引擎是devicemapper

在進行動態調整docker容器磁盤空間的時候,出現

resize2fs?1.42.9?(28-Dec-2013) resize2fs:?Device?or?resource?busy?while?trying?to?open?/dev/mapper/docker-253:1-1270544-d2d2cef71c86910467c1afdeb79c1a008552f3f9ef9507bb1e04d77f2ad5eac4 Couldn't?find?valid?filesystem?superblock.

原因是resize2fs僅能支持ext2、ext3、ext4,不支持xfs

所以建議docker服務器的文件系統格式調整為ext4


創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的docker高级应用之动态扩展容器空间大小的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。