#はじめに
いつものようにdocker buildしていたらエラーが出ました。
容量エラーの例
ApplyLayer write /var/lib/docker/image/devicemapper/layerdb/tmp/write-set-895086595/tar-split.json.gz: no space left on device stdout: {"layerSize":2447539969}
stderr:
devicemapperのbase device sizeの標準10Gがいっぱいのようです。
base device sizeを変更する手続きを見ていくと、/etc/sysconfig/docker
や/etc/sysconfig/docker-storage
で指定すると変更できるようです。
が、手元の環境では反映されなかったのでdaemon.jsonに書いたら反映されたのでメモです。
###動作環境
動作環境
CentOS7 7.3.1611
kernel 3.10.0-693.11.6.el7.el
docker :Server Version: 17.12.0-ce build c97c6d6
Storage Driver: devicemapper
設定反映の流れ
systemctl stop docker # dockerを止めて
rm -rf /var/lib/docker # コンテナやキャッシュを全部削除して
systemctl daemon-reload # 設定を再読み込みして
systemctl start docker # dockerを起動
##動いた例
/etc/docker/daemon.jsonに定義する
/etc/docker/daemon.jsonで20Gに定義したとき
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.use_deferred_removal=true",
"dm.basesize=20G"
]
}
- overlayfs2から入れ替えるとき、直接↑に変更すると動かなかったので、
storage-driver
の1行のみに変えてrm
とdaemon-reload
を実施、その後storage-opts
を追加すると動作するようになりました。
##ダメだった例
ダメだった例
/etc/sysconfig/docker
/etc/sysconfig/docker-storage
で定義したとき
DOCKER_STORAGE_OPTIONS=--storage-opt dm.baseize=20G
DOCKER_STORAGE_OPTIONS= --storage-opt dm.baseize=20G
参考資料
Docker のベースサイズを拡張する
3.18 コンテナが使用するディスクサイズ(dm.basesize)を変更する