一般 Docker 容器預設大小是 10G,如果 run 的時候忘記指定大小,或者在使用過程中發現不夠用了,可以通過下面方法解決。
我先把 run 指定大小的命令放出來
sudo docker -d --storage-opt dm.basesize=100G
然後是在容器內查看容器容量的命令:
df -hT
最上面第一行就是了.
這裡要 注意分區容器的格式一定是 ext4 !!!!
還要查看 容器引擎一定要是 devicemapper !!!!!
查看引擎命令:
sudo docker info
看 Storage Driver
下面是我從別處找來的腳本,只可以給容器擴容,但不能縮小容器的容量。
#!/bin/bash
#This script is dynamic modify docker container disk
#Author Deng Lei
passward=xxxxxxxxxxx
if [ -z $1 ] || [ -z $2 ]; then
echo "Usage: container_name increase_capacity"
echo "Example: I want increase 11G to test"
echo "The command is: sh `basename $0` test 11"
exit 1
fi
if [ `echo $passward | sudo -S docker inspect $1 &>>/dev/null && echo 0 || echo 1` -eq 1 ];then
echo "The container $1 is no exist!"
exit 1
fi
container_id=`echo $passward | sudo -S docker inspect -f '{{ .Id }}' $1`
now_disk=`echo $passward | sudo -S dmsetup table /dev/mapper/docker-*-$container_id|awk '{print $2}'`
disk=$(($2*1024*1024*1024/512))
if [ $disk -lt $now_disk ];then
echo "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
echo $passward | sudo -S dmsetup table /dev/mapper/docker-*-$container_id|sed "s/0 [0-9]* thin/0 $disk thin/"|dmsetup load /dev/mapper/docker-*-$container_id
echo $passward | sudo -S dmsetup resume /dev/mapper/docker-*-$container_id
echo $passward | sudo -S resize2fs /dev/mapper/docker-*-$container_id
if [ $? -eq 0 ];then
echo "dynamic container $1 disk to ${2}G is success!"
else
echo "dynamic container $1 disk to ${2}G is fail!"
fi
注意 passeard 後面的 xxxx 是你執行 sudo 要輸入的密碼.
執行這個腳本的命令是:
sudo sh ResizeMem.sh name xx
上面 name 是容器名,一定是容器名哦,不能是容器 ID 什麼的。
後面的 xx 是你要擴充到多少 G 的容量。想擴充到 100G 就寫 100。
最後再去容器內查一下容量,會發現成功搞定~~
不容重啟容器的哦~~~