Dockerのデータ保存場所を変更する

公開日時
更新日時

RaspberryPi4にDocker環境を構築してアプリケーションをいくつか動かしているが、デフォルトの設定だと/var/lib/docker以下にコンテナイメージやデータが保存されるため、SDカードの書き込みが増えて壊れやすくなるのではないかと心配になった。

以前RaspberryPi4にHDDを接続したものの活用していなかったので、これを機にHDDにDocker関連のデータを移動することにした。

まずはDockerを停止させる。

sudo service docker stop

/etc/docker/daemon.json にデータの保存先パスを記載して保存する。

{
  "data-root": "/mnt/hdd1/docker"
}

Docker再起動。

sudo service docker start

これでデータの保存先が変更できた。

ただ、 /var/lib/docker を移動させずに再起動したので、イメージが全て消えてしまった。

そこで、各アプリケーションで docker-compose build を再実行して、イメージの取得とビルドをやり直して無事に立ち上がるようになった。

また、再起動後にhddをmountしてからDockerを起動するようにsystemd設定を変更しておく。

systemctl list-units を実行してhddのunit名を取得する。

sudo systemctl list-units --type=mount

mnt-hdd1.mount

docker.service のAfterにmnt-hdd1.mountを追記。

sudo vi /etc/systemd/system/multi-user.target.wants/docker.service

[Unit]
After=network-online.target firewalld.service containerd.service mnt-hdd1.mount

これで再起動後も正しくDockerコンテナが起動できるようになった。

次やる時は事前にmvでディレクトリを移動させてからdata-rootの変更を行おう。

参考


Related #docker

docker-composeで最新のログを確認する場合

tailオプションも合わせて指定しよう

docker-compose build時に「no Space Left on Device」が発生

1年前にも同じエラーにハマってた

Windows10 HomeにDockerを入れる

Windows 10 May 2020 UpdateでWSL2が導入されたおかげ

next exportで書き出した静的サイトのconsoleに _next/data/xxx/.json 404エラーが出力される

Next.jsバージョンをv10.0.4にアップデートした