dockerの保存先ディレクトリを変更する
作成日: ・ 更新日:
dockerをデフォルトのまま使用していると、システムディスクの容量がどんどん消費されてしまうため、外付けHDDにdockerの保存先を移行させた
まずは、dockerdを停止させる
$ sudo systemctl stop docker.socket
$ sudo systemctl stop docker.service
移行先ディレクトリを作成し、データを移動させる
$ sudo mkdir -p [移行先ディレクトリ]
$ sudo mv /var/lib/docker [移行先ディレクトリ]
dockerdの設定ファイル(
/etc/docker/daemon.json
)を作成し、以下を上書き(orファイルがすでにあれば追記)
{
"data-root": "[移行先ディレクトリ]"
}
dockerdを起動
$ sudo systemctl daemon-reload
$ sudo service docker start
設定が反映されているか確認し、
[移行先ディレクトリ]
が表示されればOK!
$ docker info | grep "Docker Root Dir"
Docker Root Dir: [移行先ディレクトリ]
shファイルにまとめた
sudo systemctl stop docker.socket
sudo systemctl stop docker.service
sudo mkdir -p [移行先ディレクトリ]
sudo mv /var/lib/docker [移行先ディレクトリ]
echo -e "{\n \"data-root\": \"[移行先ディレクトリ]\"\n}" | sudo tee /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo service docker start
Docker実行時にエラーが発生
Dockerの保存先パスにシンボリックリンクが使用されている場合、以下のようなエラーが発生する。
$ docker compose up -d
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: invalid rootfs: not an absolute path, or a symlink: unknown
解決策として、
ln -s
の代わりに
mount --bind
を使用すればこのエラーを回避できる。
$ sudo mount --bind [元ディレクトリ] [マウント先ディレクトリ]