/var/lib/dockerを移動

/var/lib/dockeを移動しmount bindを利用

Dockerを運用している機器のルートパーティション(/)が圧迫してきたので/var/lib/dockerを移動した

最近では、何も考えずにLinuxをインストールすると自動構成により、ルートパーティション(/)が30GBなど少なく設定される事が多いです。
Dockerを運用していると/var/lib/dockerが肥大化してくるので、/がほぼFullに近い状況になってきました。
なので、別パーティションで余裕がある/homeへ移動した

なお、今回は、Debian11上にてmount bindを利用します

移動元:/var/lib/docker
移動先:/home/docker

Docker停止 

# systemctl stop docker
# systemctl stop docker.socket

/var/lib/dockerの移動 

/home/dockerのディレクトリを作成し、rsyncで/var/lib/docker内をコピー

# mkdir /home/docker
# rsync -aXS /var/lib/docker/. /home/docker/

mount bind 

/var/lib/dockerを退避し、新たに空の/var/lib/dockerのディレクトリを作成

# mv /var/lib/docker /bar/lib/docker.bak
# mkdir /var/lib/docker

/home/dockerを/var/lib/dockerとしてマウント

# mount -o bind /home/docker /var/lib/docker

シンボリックリンクと違い、CD-ROMや外部機器のマウント同様の扱いになるので、再起動した際にマウントされません。 fstabの編集が必要となります

fstab 

fstabを編集する際は、必ずバックアップを取っておきましょう

下記を追記します

/home/docker /var/lib/docker	none	bind	0	0

マウント確認 

手動でマウントしたので、一旦マウント解除し、fstab表記でマウント出来るか確認します

# umount /var/lib/docker
# mount -a

# df -h
-
/dev/sda6        396G   17G  360G    5% /home
/dev/sda6        396G   17G  360G    5% /var/lib/docker

DOCKER_OPTSに追加 

コンテナの保存先を変更するので明示的に指定する必要があります

# pwd
/etc/default
# cat docker |grep DOCKER_OPTS
DOCKER_OPTS="-g /home/docker"

Docker起動 

# systemctl start docker

無事にdockerが起動し、しばらく様子を見て問題なければ /var/lib/docker.bak を削除

参考記事 


See also