Docker容器返回"未知" for" uname -p"命令

时间:2015-06-10 14:04:10

标签: docker ubuntu-14.04

我刚刚安装了一个全新的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。

谢谢!

2 个答案:

答案 0 :(得分:2)

我不知道uname -p使用java:7泊坞窗图片失败的确切原因,但似乎是由于泊坞窗debian图片。使用ubuntu泊坞窗图片,一切都很好。

$ docker run debian uname -p
unknown

$ docker run ubuntu uname -p
x86_64

如果您查看java:7泊坞窗图片的Dockerfile依赖项,可以找到以下内容:java:7buildpack-deps:jessie-scmbuildpack-deps:jessie-curldebian:jessie

打破uname -p的唯一因素是对debian:jessie的依赖。可以做的是建立自己的java:7泊坞窗图片,但要依赖ubuntu而不是debian

为此你必须想出一个Dockerfile,它是用于制作java:7图像的Dockerfile。

答案 1 :(得分:2)

对于很多Linux发行版,

uname -p似乎设置为unknown

虽然您无法控制这些脚本并制作文件,但您可能希望上游提交错误报告,建议他们更改代码以使用uname -m代替{1}} x86_64 {{1} },armv7l