问题描述
我构建了以下 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/xyzzy
和 linux/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 (将#修改为@)