Mac M4芯片下Docker无法识别MySQL 8镜像,容器启动失败求助
问题描述
我正在为Tomcat Server/Spring Boot项目部署三个容器,其中两个使用mysql 8.0.33和mysql 5.7已正常运行。现尝试通过以下docker-compose.yml部署第三个基于mysql 8的容器:
db: image: mysql:8 platform: linux/x86_64/v8 environment: - MYSQL_ROOT_PASSWORD=***** volumes: - mysql_es:/var/lib/mysql ports: - "3308:3306" volumes: mysql_es:
但执行compose时出现如下错误:
[+] Running 1/1 ✔ db Pulled 6.7s [+] Running 0/0 ⠋ Container blitz-db-1 Creating 0.0s Error response from daemon: No such image: mysql:8
Docker Desktop中可看到mysql 8镜像已生成,删除所有MySQL镜像后重新执行compose仍无法启动容器,设备为Mac M4芯片。
解决思路
- 指定精确镜像标签:将
image: mysql:8改为image: mysql:8.0.33(和已正常运行的8.x镜像版本一致),避免模糊标签导致的架构匹配歧义。M4为arm64架构,模糊标签可能拉取到与platform: linux/x86_64/v8不兼容的镜像。 - 手动拉取指定架构镜像:执行命令
docker pull mysql:8 --platform linux/x86_64/v8,确认拉取完成后再运行docker-compose up -d,绕开compose拉取时的缓存或架构识别问题。 - 检查镜像实际架构:执行
docker image inspect mysql:8,查看Architecture字段是否为amd64(对应linux/x86_64),如果是arm64,说明拉取的镜像架构与compose配置不匹配,需重新拉取指定架构版本。 - 清理Docker缓存:执行
docker system prune -a,清除所有未使用的镜像、容器、卷等无效资源,再重新拉取镜像并启动compose。 - 验证compose配置语法:执行
docker-compose config命令,检查配置文件是否存在缩进或格式错误。
内容的提问来源于stack exchange,提问作者UltraStars19




