You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose Up启动失败:镜像与清单版本兼容问题求助

解决Docker运行旧镜像格式错误及Snap版端口问题

一、修复Docker Desktop的旧镜像格式错误

Docker Desktop 24+版本默认禁用了对镜像格式v1和v2 schema1的支持,要临时启用兼容:

  • 打开Docker Desktop设置,切换到Docker Engine标签页
  • 在JSON配置中添加以下字段(注意保持JSON语法正确,末尾字段不要加逗号):
    {
      "allow-deprecated-image-formats": true
    }
    
  • 点击「Apply & Restart」重启Docker服务,之后再运行docker compose up即可正常拉取mysql:5.5.42镜像

如果是在WSL2终端操作,也可以直接编辑~/.docker/daemon.json文件添加上述配置,然后执行sudo systemctl restart docker重启服务

二、解决Snap版Docker的端口暴露问题

Snap版Docker因沙箱安全限制,端口映射可能无法正常生效:

  1. 检查docker-compose.yml中的端口配置是否正确,例如:
    services:
      mysql:
        image: mysql:5.5.42
        ports:
          - "3306:3306"
    
  2. 授予Snap版Docker必要的网络权限:
    sudo snap connect docker:network-control
    sudo snap connect docker:firewall-control
    
  3. 重启Snap版Docker服务:
    sudo snap restart docker
    
  4. 测试访问:可以在WSL终端内用localhost:3306测试,或者用WSL的IP地址(执行hostname -I获取)在Windows浏览器/客户端访问

三、为什么Snap版可用而Docker Desktop不可用?

  • Docker Desktop从24.x版本起,官方默认关闭了对旧镜像格式的支持,这是镜像规范废弃计划的一部分
  • Snap版Docker的版本迭代通常滞后于官方Docker Desktop,且默认配置中未启用旧格式禁用规则,因此仍能兼容运行mysql:5.5.42这类旧镜像
  • 两者的运行环境不同:Docker Desktop整合了WSL2后端但有统一的配置管理,而Snap版是独立的沙箱环境,默认daemon参数更宽松

额外建议

  • 临时兼容只是权宜之计,长期来看建议推动项目升级MySQL镜像版本(如5.7或8.x),避免后续Docker版本彻底移除旧格式支持
  • 若必须保留mysql:5.5.42,可以自行重新构建镜像:基于原镜像创建Dockerfile,执行docker build生成符合新规范的镜像,再推送到私有仓库供项目使用

内容的提问来源于stack exchange,提问作者Haider Muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:10:04