Skip to content

change_docker_image_directory

atinfinity edited this page Jul 7, 2023 · 14 revisions

docker image保存先を外部ストレージに変更する

はじめに

通常、docker imageは/var/lib/docker以下に保存されますが、Dockerの使い方によっては容量に余裕がある別ストレージに保存したいということもあります。ここではdocker image保存先を外部ストレージに変更する方法をまとめます。

動作確認環境

筆者は以下の環境で動作確認しました。

  • OS : Ubuntu 22.04 64 bit
  • Docker Engine : v23.0.4

dockerサービス停止

設定変更を行う前にdockerのサービスを停止させます。

$ sudo service docker stop
$ sudo systemctl stop docker.socket

/var/lib/dockerのデータ退避

これまでのデータは/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のバージョンによって設定方法が異なる点に注意が必要です。

Docker Engine 23.0未満

/etc/docker/daemon.jsonに以下のような記述を行い、docker imageのデータ保存先を/mnt/extra/dockerに設定します。

{
  "graph": "/mnt/extra/docker"
} 

Docker Engine 23.0以降

/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

参考URL


Menu

Computer Vision

GPGPU

AR

ROS

Docker

Jetson

ARM

プログラミング言語

開発環境

勉強会

Clone this wiki locally