Docker buildx with node app on Apple M1 Silicon - standard_init_linux.go:211: exec 用户进程导致“exec 格式错误
Docker buildx with node app on Apple M1 Silicon - standard_init_linux.go:211: exec user process caused "exec format error
请帮忙!
我正在尝试将 docker 映像部署到 kuebernetes 集群。没问题,直到我切换到带有 M1 的新 Macbook Pro。
在 m1 机器上构建映像并部署后,我从 kuebernetes pod 收到以下错误:
standard_init_linux.go:211: exec user process caused "exec format error"
在做了一些研究之后,我按照 this 媒介 post 添加并设置了 docker buildx
。
一旦我使用新的 buildx 构建了一个新映像,并且 运行 它在本地使用 docker 桌面(m1 兼容预览版),它 运行 就没有问题了。但是 kubernetes pod 仍然显示相同的错误。
standard_init_linux.go:211: exec user process caused "exec format error"
我的构建命令
docker buildx use m1_builder && docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 -f Dockerfile -t ${myDockerRepo} --push . '
在构建过程中,我看到每个平台都注销了它正在 运行从我的 Dockerfile 中执行命令。
我的推送命令
docker push ${myDockerRepo}
一件奇怪的事情是 docker 推送命令响应中的 sha256 摘要没有改变。
这是我的 docker 文件:
# Use an official Node runtime as a parent image
FROM node:10-alpine
# Copy the current directory contents into the container at /app
COPY dist /app
# Set the working directory to /app
WORKDIR /app
# Make port 8000 available to the world outside this container
EXPOSE 8000
# Run npm run serve:dynamic when the container launches
CMD ["node", "server"]
我显然不是 docker 专家。
从满头的头发开始。减少到 3 股。请保存这 3 股。
感谢所有的帮助和建议!
更新
我已经将 M1 macbook 构建的图像拉到我的其他 macbook 上,并且可以通过 docker 桌面在本地 运行 图像。我不确定这意味着什么。难道这只是一个 kuebernetes 设置?
尝试将 --platform=linux/amd64 添加到您的 dockerfile:
FROM --platform=linux/amd64 node:10-alpine
请帮忙!
我正在尝试将 docker 映像部署到 kuebernetes 集群。没问题,直到我切换到带有 M1 的新 Macbook Pro。
在 m1 机器上构建映像并部署后,我从 kuebernetes pod 收到以下错误:
standard_init_linux.go:211: exec user process caused "exec format error"
在做了一些研究之后,我按照 this 媒介 post 添加并设置了 docker buildx
。
一旦我使用新的 buildx 构建了一个新映像,并且 运行 它在本地使用 docker 桌面(m1 兼容预览版),它 运行 就没有问题了。但是 kubernetes pod 仍然显示相同的错误。
standard_init_linux.go:211: exec user process caused "exec format error"
我的构建命令
docker buildx use m1_builder && docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 -f Dockerfile -t ${myDockerRepo} --push . '
在构建过程中,我看到每个平台都注销了它正在 运行从我的 Dockerfile 中执行命令。
我的推送命令
docker push ${myDockerRepo}
一件奇怪的事情是 docker 推送命令响应中的 sha256 摘要没有改变。
这是我的 docker 文件:
# Use an official Node runtime as a parent image
FROM node:10-alpine
# Copy the current directory contents into the container at /app
COPY dist /app
# Set the working directory to /app
WORKDIR /app
# Make port 8000 available to the world outside this container
EXPOSE 8000
# Run npm run serve:dynamic when the container launches
CMD ["node", "server"]
我显然不是 docker 专家。 从满头的头发开始。减少到 3 股。请保存这 3 股。
感谢所有的帮助和建议!
更新
我已经将 M1 macbook 构建的图像拉到我的其他 macbook 上,并且可以通过 docker 桌面在本地 运行 图像。我不确定这意味着什么。难道这只是一个 kuebernetes 设置?
尝试将 --platform=linux/amd64 添加到您的 dockerfile:
FROM --platform=linux/amd64 node:10-alpine