通过 Docker SDK for Python 构建 docker 容器时指定平台

问题描述

我正在尝试在运行 Ubuntu 20.04 LTS(64 位)的 Raspberry Pi 4 上构建基于 Alpine 的 NGINX Docker 映像。

由于我还有一个在 Raspbian(32 位)上运行的较旧的 Raspberry Py 3,我希望该映像是 32 位版本,这就是我在 Dockerfile 中指定 FROM arm32v7/alpine:3.13 的原因。

我通过调用通过 SDK 触发构建

stream = client.api.build(path=dockerfile_dir,dockerfile='Dockerfile-Lastbuild',tag=config['tag'],labels=config['labels'],platform='linux/arm/v7',# <- Ignored?
                          rm=True)

然后我收到警告

[警告] 请求的映像的平台 (linux/arm) 与检测到的主机平台 (linux/arm64/v8) 不匹配且未请求特定平台

我认为通过添加参数 platform='linux/arm/v7',如指定的 in the documentation

platform (str) – 格式为 os[/arch[/variant]] 的平台。

,我会指示 Docker 我请求一个特定的平台。

当我只指定 FROM alpine:3.13 时,我收到相同的警告。

仅当我指定 FROM arm64v8/alpine:3.13 时,警告才会消失,但我假设生成的图像不再与 arm32v7 兼容,而这将是在 Raspberry Pi 3(32 位)上运行的要求.

我没有通过控制台手动尝试过,这是我接下来要做的事情,但是那个 platform 参数的目的究竟是什么?


我注意到,如果我删除 platform 参数,然后使用 FROM alpine:3.13,警告就会消失。所以我假设这个参数只对默认情况下拉取 Alpine 图像的哪个变体有影响。

这并没有解释 and no specific platform was requested 的含义。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)