Dockerfile`FROM --platform=` 选项似乎没有做任何事情

问题描述

我构建了以下 Dockerfile:

FROM --platform=linux/s390x ubuntu:20.04
ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache
RUN uname -a

我希望 uname -a 步骤打印出如下内容

Linux 4878feaa36ce 5.4.0-56-generic #62-Ubuntu SMP Mon Nov 23 19:20:19 UTC 2020 s390x s390x s390x GNU/Linux

相反,它打印出来:

Linux 9feaeca45d73 5.4.0-56-generic #62-Ubuntu SMP Mon Nov 23 19:20:19 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

它似乎忽略了 --platform= 标志。该标志似乎产生零差异。 (它并没有完全忽略它,因为如果我用一个无意义的值替换 linux/ 部分,它会给我一个错误;但是,linux/ 之后的内容似乎并不重要, linux/xyzzylinux/s390x 都做同样的事情。)

相比之下,这符合我的预期:

FROM ubuntu@sha256:54585b0cee318ba7997bf4d1342f27754889ebf7be8c2f3a3f59752e856a7904
ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache
RUN uname -a

--platform= 标志是否损坏?还是我用的不对?为什么第一个 Dockerfile 没有做我期望它做的事情,即选择 ubuntu:20.04 的 linux/s390x 映像,这是一个多架构映像。

(在上面的两个 Dockerfiles 中,ADD 步骤只是为了防止 RUN uname -a 步骤 from being cached,所以你每次都会得到它的输出。另外,在这两种情况下,我都是实际上不是在 s390x Linux 上运行,我在 x86-64 上运行,但我通过 QEMU 运行 s390x Docker 映像)

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...