Dockerfile中的FROM --platform选项

37

Dockerfile文档中提到,可以在FROM指令中使用--platform选项:

FROM [--platform=<platform>] <image> [AS <name>]

在我的dockerfile中,我有以下语句:
ARG arch
FROM --platform linux/${arch} bounz/hgbe.base

bounz/hgbe.base镜像有两个操作系统/架构变体:linux/amd64linux/arm/v7

但是,尝试使用此dockerfile构建镜像时会出现错误:

$ docker build -f hgbe.dockerfile --build-arg arch=amd64 -t bounz/hgbetest:amd64-0.1 .
Sending build context to Docker daemon  12.29kB
Error response from daemon: Dockerfile parse error line 2: FROM requires either one or three arguments

我做错了什么? 如果使用docker buildx构建基础镜像,是否有一种方法可以引用特定平台的基础镜像?

1个回答

58

更新您的Docker文件,您缺少=

ARG arch
FROM --platform=linux/${arch} bounz/hgbe.base

这个地方真是超级令人困惑的,因为这个选项更像是“目标平台”,而不是“源平台”。试着在FROM中指定一个与平台不匹配的镜像摘要——构建将成功进行,甚至没有警告,但会生成与你指定的--platform相等的镜像。这绝对不是docker run命令中--platform的工作方式。这个选项更像是“源平台”,如果你指定了一个错误摘要的镜像,它会产生错误。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接