使用docker-compose up --force-recreate重建Redis容器时出现'ContainerConfig'错误
解决docker-compose up --force-recreate报'ContainerConfig' KeyError的问题
可能原因
这个错误大多是旧容器元数据损坏或者docker-compose与Docker Engine版本不兼容导致的——--force-recreate会尝试读取原有容器的配置信息,如果原有容器的元数据出现异常,或者工具版本不匹配,就会触发这个KeyError。而down/up流程会彻底销毁旧容器再重建,不会读取旧容器的残留配置,所以能正常执行。
具体解决步骤
1. 彻底清理旧容器及关联数据
先彻底清除原有容器、卷和缓存,避免残留元数据干扰:
# 停止并删除容器、网络、关联卷 docker-compose -f docker-compose.prod.yml down -v # 清理Docker冗余缓存 docker system prune -f
之后再执行--force-recreate:
docker-compose -f docker-compose.prod.yml up -d --force-recreate
2. 升级docker-compose到兼容版本
如果仍在使用旧版docker-compose(v1.x),建议升级到官方推荐的v2版本(命令改为docker compose,无横杠):
- 卸载旧版(以Linux为例):
sudo rm /usr/local/bin/docker-compose
- 安装新版:
sudo apt-get update && sudo apt-get install docker-compose-plugin
之后用新版命令执行:
docker compose -f docker-compose.prod.yml up -d --force-recreate
3. 匹配Docker Engine与docker-compose版本
确保两者版本兼容,比如docker-compose v2.x需要Docker Engine 20.10.0+版本。查看版本命令:
# 查看Docker Engine版本 docker --version # 查看旧版docker-compose版本 docker-compose --version # 查看新版docker compose版本 docker compose version
若版本差距过大,建议将Docker Engine升级到稳定版。
验证
执行完上述步骤后,重新运行--force-recreate命令,即可正常重建容器。
内容的提问来源于stack exchange,提问作者ViaTech
相关产品推荐
相关产品推荐

