修改MySQL主机端口后docker-compose启动报'ContainerConfig'错误求助
原因分析
这个KeyError: 'ContainerConfig'错误本质是老版本docker-compose(带横杠的独立工具)与Docker镜像元数据结构不兼容,而改端口才触发的原因是:
- 原配置
3306:3306下,你之前可能已经成功启动过容器,docker-compose会复用已存在的容器(即使本地MySQL占用3306时启动失败,但容器实体可能已经创建),此时不需要重新解析镜像的元数据,因此不会触发错误; - 当修改为
3307:3306后,docker-compose需要重新创建容器(端口映射属于容器创建时的配置,无法在现有容器上修改),这时候老版本工具在读取镜像的ContainerConfig字段时,因为镜像采用了新的元数据格式,导致解析失败抛出KeyError。
解决办法
- 切换使用官方推荐的
docker compose命令:这是Docker整合到CLI中的新命令,兼容性更强,直接替换原命令即可,比如执行docker compose up; - 升级
docker-compose到最新稳定版:如果坚持使用旧的独立工具,更新到最新版本可以修复元数据解析的bug; - 清理旧容器与缓存后重试:执行
docker-compose down -v彻底删除旧容器、卷和网络,再重新拉取镜像启动,避免旧缓存残留的异常数据影响。
内容的提问来源于stack exchange,提问作者IDK
相关产品推荐
相关产品推荐

