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
を削除