docker 29.0.0 で ファイルシステムがうまく利用できない
Table of Contents
コンテナイメージを build するために docker community edition を利用している。
2025/11/6 に新しいバージョンとして Docker Engine 29.0.0 がリリースされ、順次パッケージ化されて配布されているが、このバージョンアップ後に docker を利用した build が正常に動かなくなってしまった。
結論
Docker Engine 29.0.0 から overlay2 storage-driver が利用できない場合に、自動的に代替の storage-driver を利用しようとしなくなった。
そのため、 overlay2 が利用できない docker-in-docker 環境において、 overlayFS を利用しようとした場合にエラー終了してしまっていた。
参考: https://github.com/docker/cli/issues/6646
解決策を含め前述の参考ページに載っているが、 docker-in-docker 環境における公式が提供している手段を利用することもできるようだが、パッと解決したかったのと、 docker build の実行ができればよかったので、 dockerd コマンドでの daemon 起動時のオプションで解消。
dockerd --storage-driver vfs &
出力ログサンプル
Docker Engine 29.0.0 でのエラー
docker build の中で出力されていたエラー。
ERROR: mount source: "overlay" ...omitting... err: invalid argument
Docker Engine 28.x のとき
よくよく振り返って過去のログを見ると、そもそも Docker Engine 28.x のときも、 docker-in-docker 環境で overlay2 storage-driver が利用できないので、 vfs storage-driver を使用していると、 dockerd 起動時にエラーを出力してくれていた。
ERRO[$(date +%Y-%m-%dT%H:%M:%S.%NZ)] failed to mount overlay: invalid argument storage-driver=overlay2
ERRO[$(date +%Y-%m-%dT%H:%M:%S.%NZ)] exec: "fuse-overlayfs": executable file not found in $PATH storage-driver=fuse-overlayfs
INFO[$(date +%Y-%m-%dT%H:%M:%S.%NZ)] Loading containers: start.
INFO[$(date +%Y-%m-%dT%H:%M:%S.%NZ)] Loading containers: done.
INFO[$(date +%Y-%m-%dT%H:%M:%S.%NZ)] Docker daemon commit=89c5e8f containerd-snapshotter=false storage-driver=vfs version=28.5.2
メモ・感想
- Docker Engine 28.x におけるログで、 storage-driver として vfs が自動的に利用されていたため、
dockerd --storage-driver vfsとして dockerd を起動してエラー回避したが、dockerd --feature containerd-snapshotter=falseでも良い模様 - Docker Engine の公式の手順として、 docker-ce や docker-ce-cli を バージョン指定なくインストールさせている
- ので、今回のような CICD 用の環境では docker などのコンテナ内で
docker buildを実行しているケースはままあると思うので、 build 用のコンテナが 都度 docker-ce をインストールしていると、これにハマると思われる
- ので、今回のような CICD 用の環境では docker などのコンテナ内で
- Docker Engine 29.0.0 は 2025/11/6 にリリースされているが、OSインストール用のパッケージは今週新しくなっている模様
- Docker Engine って Community Edition で CLI だけちょい利用とかなので、特に本番環境では、積極的に利用したいという感覚がなかったが、 Issue への返信速度がものすごく早く、かなり印象が良くなった
参考
- GitHub の Issue で同一の報告
- Docker Engine version 29.0.0 の リリースノート
- Linux ディストリビューション 毎の利用可能な storage-driver
