通常、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
注意事項: passward の後ろの xxxx は sudo を実行する際に入力するパスワードです。
このスクリプトを実行するコマンドは次の通りです:
sudo sh ResizeMem.sh name xx
上記の name はコンテナ名である必要があります。コンテナ ID などではなく、コンテナ名であることに注意してください。
後ろの xx は拡張する容量を G 単位で指定します。100G に拡張したい場合は 100 と入力してください。
最後に、コンテナ内で容量を再確認すると、成功したことがわかります。
コンテナを再起動する必要はありません。
上記のコードは以下を参考にしました: http://www.linuxidc.com/Linux/2015-01/112245.htm