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の変更を行おう。