hans

hans

【Docker】Dockerコンテナの容量を増やす


通常、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

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。