Voj*_*tal 5 multiplatform docker apple-silicon
当前的 docker 测试版要求您在--platform=linux/amd64每次需要时指定一个build或runamd64 图像/容器。
文档提到
当运行具有多架构支持的镜像时,docker 会自动选择与您的操作系统和架构相匹配的镜像变体。
该文档未指定使用 env 变量更改此自动行为的方法。它似乎忽略了 BUILDPLATFORM 和 TARGETPLATFORM。
是否有任何其他方法强制docker运行所有build和run使用的平台的命令linux/amd64,而不是linux/arm64/v8默认情况下在苹果硅运行MacOS的?
小智 246
使用Apple Silicon(或其他基于ARM64的架构)构建的 Docker 映像在将映像部署到基于Linux或Windows的 * AMD64环境(例如AWS EC2、ECS等)时可能会产生问题。例如,您可能尝试将M1芯片上制作的 docker 镜像上传到AWS ECR存储库,但它无法运行。因此,您需要一种在ARM64架构上构建基于AMD64 的映像的方法,无论是使用Docker构建(对于单个映像)还是构建(例如,对于在docker compose网络中运行的多映像应用程序)。docker-compose
对于构建单个 docker 映像:使用命令行设置环境变量或按照接受的答案中的建议修改您的.bashrc或文件。.zshenv
export DOCKER_DEFAULT_PLATFORM=linux/amd64
Run Code Online (Sandbox Code Playgroud)
或者,在命令Dockerfile中包含以下标志FROM(对于多阶段Dockerfile构建,仅第一阶段需要该标志):
FROM --platform=linux/amd64 python:3.7-alpine
Run Code Online (Sandbox Code Playgroud)
要在构建过程中构建映像docker-compose,请包含platform: linux/amd64每个服务的 。例如:
services:
frontend:
platform: linux/amd64
build: frontend
ports:
- 80:80
depends_on:
- backend
backend:
platform: linux/amd64
build: backend
Run Code Online (Sandbox Code Playgroud)
Tim*_*nen 52
您不需要像答案之一中提到的那样导出 env 变量,您可以通过执行以下操作将其作为命令的一部分运行一次:
DOCKER_DEFAULT_PLATFORM=linux/amd64 docker-compose build
Run Code Online (Sandbox Code Playgroud)
请记住,如果您已经下载了不同平台的映像,则无论您将哪个平台指定为默认平台,docker 都会继续使用该映像,您将docker image rm your_img首先使用删除该映像来修复该问题。
Max*_*ass 19
您可以使用buildx(mobi),它支持cli平台。
docker buildx build --platform linux/amd64 .
Run Code Online (Sandbox Code Playgroud)
小智 13
你可以设置
export DOCKER_DEFAULT_PLATFORM=linux/amd64
Run Code Online (Sandbox Code Playgroud)
在 Mac M1 的 .zshrc 文件中
Bep*_*e C 10
你可以设置环境变量 DOCKER_DEFAULT_PLATFORM
export DOCKER_DEFAULT_PLATFORM=linux/amd64
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2441 次 |
| 最近记录: |