我正在遵循官方的 docker labs 多容器应用程序实践教程。 在 MacBook Pro M1 终端
上运行以下命令时docker run -d `
--network todo-app --network-alias mysql `
-v todo-mysql-data:/var/lib/mysql `
-e MYSQL_ROOT_PASSWORD=secret `
-e MYSQL_DATABASE=todos `
mysql:5.7
我收到以下错误。
docker:清单列表中没有 linux/arm64/v8 的匹配清单 条目。
如果其他人在专门遵循 Mac M1 计算机上的指南时遇到此问题,最快的解决方法可能是添加该标志:
--platform linux/amd64
喜欢
docker run -d \
--platform linux/amd64 \
--network todo-app --network-alias mysql \
-v todo-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=todos \
mysql:5.7
当你检查官方的mysql图像时,你可以看到没有提到
linux/arm64/v8
在
mysql
docker docs 的情况下甚至指出:
并非所有映像都适用于 ARM64 架构。您可以添加 --platform linux/amd64 以在模拟下运行 Intel 映像。特别是,mysql 映像不适用于 ARM64。您可以使用 mariadb 映像来解决此问题。
因此您可以使用 mariadb 作为解决方法,直到他们为
mysql
提供官方支持,如下所示:
docker run -d \
-v todo-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=todos \
mariadb:10.5
参见:github.com/docker-library/mysql/issues/318
如果您确实需要 mysql 映像,您可以尝试同一问题此处中提到的解决方法。截至目前我无法测试这个,因为我没有 m1 macbook。
如果您使用 docker compose 进行容器管理,您可以让您的
docker-compose.yaml
文件镜像与此类似的内容
services:
mysql:
platform: linux/amd64
#you can use whatever image you prefer
image: "mysql:5.7"
以下适用于我 MACOS M2
mysql:
image: mysql:8-oracle
container_name: mysql
restart: on-failure
# platform: linux/amd64
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=mydb
# volumes:
# - /Users/piash/mysql:/var/lib/mysql
ports:
- 3308:3306