Dockerは容量を消費しやすいです。容量を使うのはイメージ、ビルドキャッシュ、ボリューム、生きてるコンテナです。それぞれを都度削除するのも手ですが、それでも限界になりやすいですしイメージやビルドキャッシュは削除したものが再び欲しくなる時も少なくないです。これの対策として最初から容量の大きなディスクに容量を使う部分を保存する方法があります。これを紹介します。
使うのはDockerエンジンの設定ファイルである daemon.json です。これを /etc/docker/daemon.json に置きます。なければ作ります。daemon.json には様々な Docker エンジンの設定を書き込めます。例えばGPUを使う用のランタイム設定ができます。ここでイメージやらを置く場所のパスも設定できます。
daemon.jsonの使い方の概要は次リンク先にまとまっています。
Daemon | Docker Docs
使用可能な項目の詳細リストが次リンク先です。
dockerd | Docker Docs
この記事の目的にそぐう設定項目は data-root です。
Daemon | Docker Docs#Daemon data directory
data-root を設定するとデフォルトでは /var/lib/docker に保存されていた部分を別の場所に動かせます。 これは例えば次のようにできます
{ "data-root": "/mnt/big_size_disk/docker" }
この設定を書いてDockerエンジンを再起動すれば、次からは /mnt/big_size_disk/docker にイメージなどが保存されます。以前作業した諸々を引き継ぎたいのであれば、Dockerを停止、次のようにファイルを移動、Dockerを再起動、とすればいいです。
# sudo systemctl stop docker などでdocker 停止 sudo rsync -aP /var/lib/docker/ /mnt/big_size_disk/docker/ # sudo systemctl start docker などでdocker 再起動
こんな感じでDockerの容量が大きい部分を他に逃がすことができます。