我刚刚安装了一个全新的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。
谢谢!
答案 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:7
→buildpack-deps:jessie-scm
→buildpack-deps:jessie-curl
→debian:jessie
打破uname -p
的唯一因素是对debian:jessie
的依赖。可以做的是建立自己的java:7
泊坞窗图片,但要依赖ubuntu
而不是debian
。
为此你必须想出一个Dockerfile,它是用于制作java:7
图像的Dockerfile。
答案 1 :(得分:2)
uname -p
似乎设置为unknown。
虽然您无法控制这些脚本并制作文件,但您可能希望上游提交错误报告,建议他们更改代码以使用uname -m
代替{1}} x86_64
{{1} },armv7l
等