-
Notifications
You must be signed in to change notification settings - Fork 13
change_docker_image_directory
通常、docker imageは/var/lib/docker
以下に保存されますが、Dockerの使い方によっては容量に余裕がある別ストレージに保存したいということもあります。ここではdocker image保存先を外部ストレージに変更する方法をまとめます。
筆者は以下の環境で動作確認しました。
- OS : Ubuntu 22.04 64 bit
- Docker Engine : v23.0.4
設定変更を行う前にdockerのサービスを停止させます。
$ sudo service docker stop
$ sudo systemctl stop docker.socket
これまでのデータは/var/lib/docker
に残っているので外部ストレージにデータを退避します。
以降の説明では/mnt/extra
に外部ストレージがマウントされていることとします。
$ sudo mkdir /mnt/extra/docker
$ sudo rsync -aXS /var/lib/docker/. /mnt/extra/docker/
/etc/docker/daemon.json
に設定を記述することでdocker imageのデータ保存先を/mnt/extra/docker
に設定します。
Docker Engineのバージョンによって設定方法が異なる点に注意が必要です。
/etc/docker/daemon.json
に以下のような記述を行い、docker imageのデータ保存先を/mnt/extra/docker
に設定します。
{
"graph": "/mnt/extra/docker"
}
/etc/docker/daemon.json
に以下のような記述を行い、docker imageのデータ保存先を/mnt/extra/docker
に設定します。
https://docs.docker.com/engine/release-notes/23.0/#removedに
Remove the
-g
and--graph
daemon options in favor of--data-root
.
とあるようにgraphオプションが削除されたため、graph
ではなくdata-root
を指定する必要があります。
{
"data-root": "/mnt/extra/docker"
}
これまでの設定を反映するために以下のコマンドを実行し、デーモンをリロードしてdockerサービスを起動します。
$ sudo systemctl daemon-reload
$ sudo service docker start
$ docker info | grep "Docker Root Dir"
と実行して
Docker Root Dir: /mnt/extra/docker
となっていれば設定が正しく反映できていることがわかります。
これまでの設定で/var/lib/docker
は不要になったので削除しておきます。
$ sudo rm -rf /var/lib/docker