ContainerConfigエラーの解決
Docker Composeの--force-recreate
実行時に発生するKeyError: 'ContainerConfig'
の対処法
問題の説明
docker-compose up -d --force-recreate
実行中に、以下のエラーが発生しサービス(例: Redis)の再作成に失敗する現象:
ERROR: for app_redis_1 'ContainerConfig'
KeyError: 'ContainerConfig'
この問題の特徴:
docker-compose down
+docker-compose up -d
では正常動作- Docker Compose v1(
docker-compose
コマンド)で再現 - 2024年以降の環境更新後によく発生
根本原因:
古いDocker Compose v1(Pythonベース)の互換性問題。特に--force-recreate
処理のVolumeバインド関連オプション解釈に不具合が存在します。
解決策: Docker Compose v2への移行
最新のDocker Compose v2(Go言語実装)で問題は解消されます。移行手順は環境に応じて異なります。
方法1: Ubuntu/Debianでの移行
bash
# 既存のv1アンインストール
sudo apt-get remove docker-compose
# v2インストール(プラグイン形式)
mkdir -p ~/.docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
# 動作確認(v2.x.xと表示されれば成功)
docker compose version
方法2: マルチバージョン環境での注意点
bash
# 両バージョンが混在する場合の確認方法
docker-compose version # v1 (1.x系)
docker compose version # v2 (2.x系)
# v2を優先して使用
alias docker-compose="docker compose" # シェルエイリアス設定推奨
移行後の操作
bash
# v2で正常動作するコマンド例
docker compose -f docker-compose.prod.yml up -d --force-recreate
なぜv2で解決するのか?
項目 | Docker Compose v1 | Docker Compose v2 |
---|---|---|
実装 | Pythonベース | Go言語ベース |
メンテナンス | 非推奨(2023年終了) | 公式サポート継続中 |
--force-recreate の挙動 | Volumeバインド処理に不具合 | 正しくVolumeを処理 |
⚠️ 注意
Ubuntuのapt
では異なる2つのパッケージが存在:
bash
docker-compose # 旧v1(非推奨)
docker-compose-v2 # v2(推奨)
インストール時は明示的にdocker-compose-v2
を指定してください。
補足:既存環境のトラブルシューティング
移行後に問題が発生する場合:
bash
# キャッシュクリア
docker system prune -a --volumes
# Composeファイルのバージョン確認(3.8以上が安全)
version: '3.8'
services:
redis:
image: redis:latest
...
まとめ:ContainerConfig
エラーの解決には:
- Docker Compose v1の完全アンインストール
- v2の公式手順に基づくインストール
docker compose
(ハイフンなし)コマンドの使用