Docker 容器 returns "unknown" 用于 "uname -p" 命令

Docker container returns "unknown" for "uname -p" command

我刚刚安装了一个全新的 Ubuntu Server 14.04.2 LTS 并且还安装了 docker 到 运行 容器。我正面临一些问题。容器将用于 运行 Jenkins 及其一些作业 运行s 脚本以安装 Android NDK/SDK。这些脚本使用 uname -p 命令检查当前机器的平台。此命令 运行 在主机上运行良好,但在容器中 returns unknown 如下所示:

lemonade@olympus:/$ docker info
Containers: 14
Images: 171
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 199
Execution Driver: native-0.2
Kernel Version: 3.16.0-38-generic
WARNING: No swap limit support
lemonade@olympus:/$ uname -a
Linux olympus 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
lemonade@olympus:/$ uname -p
x86_64
lemonade@olympus:/$ docker run -ti java:7 /bin/bash
root@c6cdbb8a64fb:/# uname -p
unknown
root@c6cdbb8a64fb:/# uname -a
Linux c6cdbb8a64fb 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 GNU/Linux

有谁知道为什么容器会返回这个?一些脚本(不是我们编写的)使用它,还有很多 makefile。

谢谢!

我不知道 uname -p 使用 java:7 docker 图像失败的确切原因,但这似乎是由于 docker debian 图片。 ubuntu docker 图像,一切正常。

$ docker run debian uname -p
unknown

$ docker run ubuntu uname -p
x86_64

如果您查看 java:7 docker 图像的 Dockerfile 依赖项,您会发现以下内容:java:7buildpack-deps:jessie-scmbuildpack-deps:jessie-curldebian:jessie

唯一破坏 uname -p 的是对 debian:jessie 的依赖。可以做的是构建自己的 java:7 docker 图像,但使其依赖于 ubuntu 而不是 debian

为此,您必须想出一个 Dockerfile,它是用于制作 java:7 图像的文件的合并。

对于很多 linux 发行版,

uname -p 似乎设置为 unknown

虽然您不控制这些脚本和制作文件,但您可能希望向上游提交错误报告,建议他们更改代码以使用 uname -m,而不是如果他们试图检测 x86_64armv7larmv6l、等等