Dockerのルートボリュームサイズを増やす

docker pullでダウンロードしている途中で

docker: failed to register layer: ApplyLayer exit status 1 stdout: stderr: write …………………. no space left on device

となったときの対処法。df -hでみても、df -iで見ても、別にディスクは十分空いているのにエラーが出るときは、そもそもdockerのルートボリュームが10GBしかないことが原因。

/lib/systemd/system/docker.service

のファイルで

ExecStart=/usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock -s devicemapper –storage-opt dm.basesize=100G

上のような感じで書き換えれば良い。

参考:https://qiita.com/karin_0624/items/52e1f6f61bd29eab769f

4台中3台のサーバはホストのルートディレクトリと同じボリュームだけ使えたので、なんで1台だけこんな設定を変更しないといけないのかはよく分かっていない。

♯2021/12/31追記

そもそもloopデバイスを使わないようにoverlayファイルシステムを使うように指定すれば良かったみたい。

/etc/sysconfig/docker を編集して、

 other_args="-s overlay" 

dockerデーモンを停止させてから既存のdockerイメージを rm -rf /var/lib/docker/ で全削除した後、dockerデーモンを再起動させるとoverlayになっている。

コメントする