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になっている。