CV・NLPハマりどころメモ

画像認識と自然言語処理を研究する上でうまくいかなかったことと,その対策をまとめる自分用のメモが中心.

Dockerのコンテナ・イメージの保存場所を変更[Docker]

Docker のイメージやコンテナは標準設定だと /var/lib/docker に格納される.

しかし, それではメインストレージの容量が膨らんでしまったときに収集がつかなくなってしまうので, サブのストレージに格納したい.

そこで本記事では,Dockerのコンテナ・イメージの保存先を外部ディスクへ変更する手順について説明する.

注意点:既に/var/lib/dockerでコンテナ・イメージを保存している場合は,そのデータの引越しが必要.

まずはdockerを止める.

$ sudo service docker stop
$ sudo systemctl stop docker

docker.serviceファイルをコピーし, Unitファイルを編集

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

/etc/systemd/system/docker.service をvimなどで開き,以下の行を探して --data-root オプションをつける. --data-rootオプションの後にコンテナ・イメージを保存するディレクトリを指定.

ExecStart=/usr/bin/dockerd -H unix:// # 編集前
ExecStart=/usr/bin/dockerd -H unix:// --data-root /home/ubuntu/disk/docker # 編集後

※もし保存場所変更以前にもdockerを使っていた場合は,元の場所から(デフォルトなら/var/lib/docker/volumes),変更先(今回の場合は,/home/ubuntu/disk/docker)にファイル・フォルダ一式をコピーする.

Dockerを再起動

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

ここまでくれば完了.正常に動作するかを確かめる.

$ docker run hello-word

Hello worldが出たら,無事成功.

最後に指定したフォルダにdockerのファイルツリーが構築されているかを確認.

cd /home/ubuntu/disk/docker

ubuntu@ip-xxx-xx-xx-xxx:~/disk/docker$ ll
total 56
drwx--x--x 14 ubuntu ubuntu 4096 Nov 14 07:27 ./
drwx--x--x  3 ubuntu ubuntu 4096 Nov 14 07:27 ../
drwx------  2 root   root   4096 Nov 14 07:27 builder/
drwx------  4 root   root   4096 Nov 14 07:27 buildkit/
drwx------  3 root   root   4096 Nov 14 07:27 containers/
drwx------  3 root   root   4096 Nov 14 07:27 image/
drwxr-x---  3 root   root   4096 Nov 14 07:27 network/
drwx------  6 root   root   4096 Nov 14 07:27 overlay2/
drwx------  4 root   root   4096 Nov 14 07:27 plugins/
drwx------  2 root   root   4096 Nov 14 07:27 runtimes/
drwx------  2 root   root   4096 Nov 14 07:27 swarm/
drwx------  2 root   root   4096 Nov 14 07:27 tmp/
drwx------  2 root   root   4096 Nov 14 07:27 trust/
drwx------  2 root   root   4096 Nov 14 07:27 volumes/

上のようなファイルツリーが表示されれば,作業完了だ.

初期のディレクトリは混乱の元になるので削除しておこう.

sudo rm -r /var/lib/docker