docker imageの保存先を変更する
最近自分はdeep learningやデータサイエンスの環境構築も基本的にdockerで行うようにしています。
dockerfileさえあれば他のVMでも簡単に同じような環境が作れるので重宝しています。
しかし、docker imageって何気にサイズがでかいのでストレージの容量がすくない端末やVMだとimageをたくさん作ったときにすぐ容量がなくって辛いです…
そこで今回はdocker imageの保存先を変えてみたいと思います。
docker imageの情報はデフォルトの設定を変えていなければ基本的に /var/lib/docker/
配下に保存されます。
この保存先のパスをマウントされたディスクなどに変更してあげればいいわけです。
docker の環境ファイルの場所を確認
docker info
で環境ファイルの場所を確認できます。
$ docker info Containers: 16 Running: 4 Paused: 0 Stopped: 12 Images: 53 Server Version: 17.12.0-ce Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive Runtimes: nvidia runc Default Runtime: runc Init Binary: docker-init containerd version: 89623f28b87a6004d4b785663257362d1658a729 runc version: b2567b37d7b75eb4cf325b77297b140ea686ce8f init version: 949e6fa Security Options: apparmor seccomp Profile: default Kernel Version: 4.13.0-1008-gcp Operating System: Ubuntu 16.04.3 LTS OSType: linux Architecture: x86_64 CPUs: 8 Total Memory: 196.8GiB Name: kirikei-gpu-2p100 ID: Y2TO:YVPN:Q5CC:CE2U:D36N:LAPL:ETKB:2CWC:6FHM:43TH:IWK2:UVTW Docker Root Dir: /var/lib/docker #環境ファイルの保存先 Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false
それでは/var/lib/docker/
を覗いてみましょう。
$sudo ls /var/lib/docker builder containerd containers image network overlay2 plugins runtimes swarm tmp trust volumes $sudo ls /var/lib/docker/containers 05bdbbd0ba717e5fa9c1278a36d4cadfd21c086e04cd2bf2f04cb1c80b7cb601 6a5be04d34dfe04c4d20c7085a2a7c79e6293917b1a34e746fb48beb16cab05a 29182f0a853741eae26c35a00acaff15e0ada8654b2c28b07ce5b799b6114a91 74d5762a9ab6a889f3a0742d226ee0dae4bc5bbc3b8a0b44ee89f3f9fd2e4d7c 3da8d78d42aa0be6331a462f3c1b19ad12e98ce84a35c90ef2363e91fa6f8753 84296104a53777287ac81126ea54353d216ac945e3767747fc0100f196cf3d6a 3f826eecd54f3f5c4f4669ca32da74cf6242d98f81b0290a11017db6bb5217e6 8a190f44c0c0b5e58cb842ea34a38bb1b0dae40e0d0c47e7b747fbc2b5414255 422966b08448176ae8b97530a95aaf6d38c0bf17ddfd82f4952c76f6ac1f73cb b26f8795699f8341b37a3baaab099aba3fc0dfbfe4c4603d77a9097b78093cc4 42b231e2bb3069913c23c88cc0184593be3aed21292f4ba5462a69518fe65eb4 c6e9faebbcf89bbeabf0da0e7c2feaaed6beb212df4516abdde15cc1f3e80c4c 54f4ec7e7f2fbb744e47c1d39e89a82a873e0abdff64d6003895e319be02e9a9 f27eadcbbf130ee30dd1fb544a2644b06ca7d2608889543fe0fcaed59ad1587f 59f251808b4b6da9ee26f768cd0e5f1f22071a4e6514edbedf17e337f7829096 f834f94f5b6de0dbc2f1ad0d09ccc28b5d2ba9f387b4b89917e5d9caaadb8b05
このようにcontainerやimageが保存されていることがわかります。
環境ファイル保存先を変更する。
簡単に調べたところ、docker環境の保存先を変更する方法はdockerの設定ファイルをいじったり、docker daemonの起動オプションをつけたりと複数の方法があるようです。
forums.docker.com
stackoverflow.com
今回調べたなかでもっとも簡単にできそうなシンボリックリンクは貼る方法でやりたいと思います。
やりかたの基本は下記リンクの通りです。
1.docker daemonを停止させる
$ /etc/init.d/docker stop
2.docker関連のプロセスが動いていないことを確認
$ ps aux|grep docker
3./var/lib/docker/
の中身を新しい場所に移動させる
$ mv /var/lib/docker /path/to/new/
4.デフォルトの場所にシンボリックリンクを貼る
$ ln -s /path/to/new/docker/ /var/lib/docker
5.docker daemonをスタートさせる
$ /etc/init.d/docker start
6.新しい場所でimageやcontainerが動いていることを確認する
以上です。
それではよいdockerライフを!