Docker のイメージ・コンテナの格納場所の移動

既定では Docker のイメージやコンテナは /var/lib/docker に格納される

でもそんなとこに何ギガも容量取られると困るー! と思ったのでイメージやコンテナの保管場所を移動方法をまとめました

(そもそも /var/lib/docker に別ストレージをマウントしろよって話もありますが、別にそれでもいいです)

f:id:xterm256color:20180430121350j:plain

環境

  • Ubuntu 18.04
  • Docker 17.12.1-ce

手順

とりあえずdocker止める

sudo su
systemctl stop Docker

Unitファイルを編集

/lib/systemd/system/docker.service/etc/systemd/systemにコピペ

cp /lib/systemd/system/docker.service /etc/systemd/system/

/etc/systemd/system/docker.service から以下の行を探して --data-root オプションをつける

編集前

ExecStart=/usr/bin/dockerd -H fd://

編集後

ExecStart=/usr/bin/dockerd -H fd:// --data-root /path/to/docker

docker再起動

systemctl daemon-reload
systemctl restart docker

動作確認

docker run hello-world

/path/to/docker の中にこんなファイルが出来てたらOK。 /var/lib/docker は消してしまいましょう

/path/to/docker
├── builder
├── containerd
├── containers
├── image
├── network
├── overlay2
├── plugins
├── runtimes
├── swarm
├── tmp
├── trust
└── volumes

注意点

NTFSなストレージには移動できないので注意。NTFS使ってると docker run したあとでこんなエラーメッセージが返ってくる

docker: Error response from daemon: error creating overlay mount to /path/to/docker/overlay/e86c5ccec4b435b048c3d64753a8dbcedc8655753ee18f256f0800fdedb783c6-init/merged: invalid argument.

調べてみたらNTFS はサポート外だから使うなってことらしい*1

なので大人しく ext4 のストレージに移動するのが吉

参考URL