Docker容器为“uname -p”命令返回“unknown”

我刚刚安装了全新的Ubuntu Server 14.04.2 LTS,并安装了docker来运行容器。 我正面临着一些问题。 一个容器将被用来运行Jenkins,它的一些作业运行脚本来安装Android NDK / SDK。 这些脚本正在使用uname -p命令检查当前机器的平台。 这个命令在主机上运行良好,但是在容器中返回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。

谢谢!

我不知道使用java:7 docker镜像的uname -p失败的确切原因,但似乎是由于docker debian镜像。 随着ubuntudocker形象,一切都很好。

 $ 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的依赖debian:jessie 。 有什么可以做的是build立自己的java:7docker的形象,但使它依赖ubuntu而不是debian

为此,你将不得不提出一个Dockerfile,它是用来制作java:7图像的合并。

uname -p似乎被设置为未知的很多Linux发行版。

虽然你不能控制这些脚本并创build文件,但你可能想向上游提交错误报告,build议他们改变他们的代码来使用uname -m而不是尝试检测x86_64armv7larmv6l等。