・うまく消えないdockerのゴミを消してしまおう。
・dockerの保存場所を別ドライブに移してしまおう。
・ubuntu22.04環境です。
VScodeでdocker使っているが、イメージなど使い捨てしないのでディスクを圧迫してしまった。
通常はpruneコマンドで不要なものを消していく。
dockerのフォルダ全体を削除してスペースを空ける
/var/lib/docker/overlay2 がすごい容量になっていてpruneコマンドであまり消えてくれない。
仕方が無いので、いっぺんフォルダごと削除してみた。
sudo systemctl stop docker.service
sudo systemctl stop docker.socket
sudo rm -rf /var/lib/docker
sudo systemctl start docker.socket
sudo systemctl start docker.service
rm -rf コマンドは、フォルダの強制削除をするので用心深く使う。
コンテナ内に重要なデータが無いこと。
フォルダの削除後にdocker-compose up を実施したところ/var/lib/docker/overlay2 フォルダが再作成されている。dockerの再インストールとかしなくて大丈夫だったようだ。
docker関連ファイルを別のドライブに移す
ver24.0の日本語マニュアルによると、/etc/docker/daemon.json にjsonファイルを作成することで設定できそうだが、dockerフォルダを丸ごと移したい(jsonの置き場が無くなる)ので別の方法を採用。
dockerデーモンのオプションで設定する
docker.serviceファイルを編集する
sudo gedit /lib/systemd/system/docker.service
[Service]の所にある次の行
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
半角スペースに続けて以下を追加する。
--data-root=/mnt/myssd/docker
以下のようになる。
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/mnt/myssd/docker
保存先の注意点
dockerの保存先が別ドライブの時は、マウントポイントを手動で設定すること。/media/user/など自動的に作成されたマウントポイントはアクセス権限などの関係かうまく行かない。
/etc/fstabを直接編集するか、GUIツール(おすすめ)のディスク(デフォルトでubuntuに入っている)を利用する。
/dev/disk/by-uuid/554eedee-e53f-4388-b205-2618e4ff02ec /mnt/myssd auto nosuid,nodev,nofail,x-gvfs-show 0 0
再起動してコンテナ作成など問題無ければ、sudo rm -rf /var/lib/docker で古いデータを削除する。