Sam*_*Sam 62 mysql docker apple-silicon
我正在运行Docker Apple Silicon Preview的最新版本。我创建了教程容器/图像,它工作正常。当我创建自定义 YAML 文件并运行 docker-compose 时,在拉取 mysql 时出现以下错误:
错误:清单列表条目中没有与 linux/arm64/v8 匹配的清单
这是我的 YAMl 文件中的一个片段:
version: '3'
services:
# Database
db:
image: mysql-server:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: wp
MYSQL_USER: wp
MYSQL_PASSWORD: wp
networks:
- wpsite
Run Code Online (Sandbox Code Playgroud)
我试过 :latest 和 :8 导致同样的错误。它可以很好地拉动 phpmyadmin 和 wordpress。
Luk*_*nga 172
从这个答案中,我将其添加到我的本地docker-compose.override.yml
services:
mysql:
platform: linux/amd64
Run Code Online (Sandbox Code Playgroud)
Ste*_*n W 148
好吧,从技术上讲,它不会解决您的问题(在 ARM 上运行 MySQL),但就目前而言,您可以添加platform
到您的服务中,例如:
services:
db:
platform: linux/x86_64
image: mysql:5.7
...
Run Code Online (Sandbox Code Playgroud)
或者,考虑使用 MariaDB,它应该可以作为替代品使用,例如:
services:
db:
image: mariadb:10.5.8
...
Run Code Online (Sandbox Code Playgroud)
两种方式都适用于我在 M1 上使用 Docker 预览
oct*_*dro 43
Docker 在其官方文档中说道:
并非所有映像都适用于 ARM64 架构。您可以添加
--platform linux/amd64
以在模拟下运行 Intel 映像。特别是,mysql 映像不适用于 ARM64。您可以使用 mariadb 映像来解决此问题。
(来源在这里)
因此,要使项目正常运行,您应该做的就是添加platform: linux/amd64
到 docker-compose.yml 中。
它看起来像:
services:
mysql:
image: mysql:5.7
platform: linux/amd64
...
Run Code Online (Sandbox Code Playgroud)
正如您可以想象的那样,性能可能会有所不同。
小智 40
m1 mac 的相同问题只需运行此命令
docker pull --platform linux/x86_64 mysql
Run Code Online (Sandbox Code Playgroud)
cha*_*avy 29
您只需在指定镜像后指定平台即可。使用 M2 处理器
version: '3'
services:
# Database
db:
image: mysql-server:5.7
platform: linux/amd64 <--------- this line to add
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: wp
MYSQL_USER: wp
MYSQL_PASSWORD: wp
networks:
- wpsite
Run Code Online (Sandbox Code Playgroud)
Ash*_*tri 21
This works for me in mac M1, specifying platform key inside service.
services:
mysql:
platform: linux/amd64
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
Run Code Online (Sandbox Code Playgroud)
Mar*_*n54 19
我是团队中唯一拥有 Mac(M1 芯片)的人。所有其他人都有 Windows,所以如果我想在 git 中与其他人兼容,我需要使用一个解决方案来隔离与我的机器相关的配置部分。
要添加更多配置但使用不同的文件,请docker-compose.mac.yml
在与普通文件相同的目录中创建一个新的 docker-compose 文件docker-compose.yml
。(可以用任何东西代替 mac 这个词)
version: '2'
services:
mysql:
image: mysql:8.0.26
platform: linux/amd64
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令启动它:
docker-compose -f docker-compose.yml -f docker-compose.mac.yml up
Run Code Online (Sandbox Code Playgroud)
它将复制docker-compose.yml
文件中的所有内容并将其粘贴到docker-compose.mac.yml
文件中,但不替换。
在我看来,它在拥有不同计算机的更大团队中非常有用。
bpo*_*olo 15
Oracle 为 arm64 维护了一个 MySQL 8.0.23 docker 镜像。
https://hub.docker.com/r/mysql/mysql-server
在你的 docker-compose 文件中使用它
version: "3.8"
services:
mysql:
container_name: mycontainername
image: mysql/mysql-server:8.0.23
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydatabasename
MYSQL_ROOT_HOST: "%"
command: --lower_case_table_names=1
Run Code Online (Sandbox Code Playgroud)
Hug*_*ama 14
对于任何努力使其适用于特定版本的人来说,以下内容对我不起作用:
docker run --platform linux/x86_64 mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=pass
Run Code Online (Sandbox Code Playgroud)
但这确实:
docker run --platform linux/x86_64 mysql:5.7 -e MYSQL_ROOT_PASSWORD=pass
Run Code Online (Sandbox Code Playgroud)
kho*_*hoi 11
可以尝试启动/运行容器(对于 mac m1)
docker run -d -p 3306:3306 --name mysql --platform linux/x86_64 --env MYSQL_ROOT_PASSWORD=12345 mysql
Run Code Online (Sandbox Code Playgroud)
Mis*_*awa 10
我有一个类似的问题,在我的 dockerfile 中用这一行解决了:
前
FROM ubuntu:18.04
Run Code Online (Sandbox Code Playgroud)
后
FROM --platform=linux/x86_64 ubuntu:18.04
Run Code Online (Sandbox Code Playgroud)
Sho*_*obi 10
在你Dockerfile
的 mysql 中如果你有以下内容
FROM mysql:8.0.28
将其更改为
FROM --platform=linux/x86_64 mysql:8.0.28
因为 Apple M1 中的 Docker 将寻找 ARM 镜像,而 MySQL 不发布 ARM 镜像,所以这就是为什么你会得到
无法使用前端 dockerfile.v0 解决:无法创建 LLB 定义:清单中的平台不匹配
使用该--platform
标志,即使我们使用 ARM 处理器,我们也告诉 docker 我们想要使用该x86_64
映像
Please refer to the following link for known issues. In your Mac's terminal run
softwareupdate --install-rosetta
Run Code Online (Sandbox Code Playgroud)
and then in docker-compose have something along the lines of
mysql_gdpr:
platform: linux/x86_64
image: mysql/mysql-server:8.0.23
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: "user_security"
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_USER: "security"
MYSQL_PASSWORD: "pleasechangeit"
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我们需要将具有价值的平台传递到您的 docker 镜像/文件中。
使用docker-compose.yaml文件:
services:
db:
platform: linux/x86_64
image: mysql:5.7
...
Run Code Online (Sandbox Code Playgroud)
使用Docker文件:
FROM --platform=linux/x86_64 mysql:5.7
Run Code Online (Sandbox Code Playgroud)
使用docker pull命令:
docker pull --platform=linux/x86_64 mysql:5.7
Run Code Online (Sandbox Code Playgroud)
使用DOCKER_DEFAULT_PLATFORM参数:
export DOCKER_DEFAULT_PLATFORM=linux/x86_64
Run Code Online (Sandbox Code Playgroud)
其他一些知名平台有:等linux/amd64
。linux/arm64
docker run --platform linux/amd64 --name mysql-5-7 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7
小智 5
我的M1芯片也有类似的问题。这是因为某些映像不\xe2\x80\x99不支持新的 Apple M1 芯片。
\n如果您在使用 Docker Compose 的 Apple M1 Silicon 芯片上收到此错误“清单列表条目中没有 Linux/arm64/v8 的匹配清单”。
\n添加平台:linux/amd64在 docker-compose.yml 中
\n修改上面的yml文件:
\nversion: '3'\n\nservices:\n # Database\n db:\n image: mysql-server:5.7\n platform: linux/amd64\n volumes:\n - db_data:/var/lib/mysql\n restart: always\n environment:\n MYSQL_ROOT_PASSWORD: pass\n MYSQL_DATABASE: wp\n MYSQL_USER: wp\n MYSQL_PASSWORD: wp\n networks:\n - wpsite \n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
43454 次 |
最近记录: |