为什么IBM Container Service中的docker pull和docker构build存在差异?

我们在Bluemix上使用IBM容器服务,并发现了一个奇怪的现象,我们无法解释 – 似乎docker pull和docker build在身份validation方面的行为是不同的。

首先,强制版本信息:

$ docker -v Docker version 1.7.0, build 0baf609 $ ice version ICE CLI Version : 3.0 598 2015-07-02T19:39:30 $ cf -v cf version 6.12.1-56792aa-2015-07-06T22:48:00+00:00 

这是一个全新的Ubuntu VM,只有docker,ice(以及它的prereqs)和安装的cf工具。 我build立了一个简单的小节点示例来显示问题。 只要创build这个app.js和Dockerfile,并把它们放在某个目录(我用Dev / node-hello),然后cd到目录。

app.js

 var http = require('http'); var appport = 9085; http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(appport); console.log("Server running at port"); console.log(appport); 

Dockerfile

 # sample dockerfile for demonstration FROM registry.ng.bluemix.net/ibmnode:latest RUN apt-get -y update ADD app.js /app.js EXPOSE 9085 CMD ["node", "app.js"] 

现在,在进行冰login之后,也会将您login到cf工具中,请尝试以下操作:

sudo docker build -t <your_namespace>/node-hello

dockerbuild设将死亡的最后一行是:

validation是必需的。

这不是非常有用,所以如果你在debugging模式下重新启动docker守护进程,使用:

sudo /usr/bin/docker -d -D &

然后重新运行构build,您会发现在发出validation错误之前,docker遇到了一些错误:

DEBU[2494] Error unmarshalling the _ping RegistryInfo: invalid character 'U' after top-level value

这可能是相关的,也可能是一个红鲱鱼。

现在,奇怪的是,如果你那么做一个:

sudo docker pull registry.ng.bluemix.net/ibmnode

它将在本地拉出图像没有问题,然后如果你再次发出你的docker build命令,它将运行良好! 我们是不是正在使用docker构build不正确(我不这么认为…这总是在…之前工作),或者拉和构buildpipe理方式之间有一个奇怪的差异?

这似乎是由于Docker中的已知错误 。 看起来他们已经在1.7.1中发布了一个修复程序 。

你能升级你的客户端,然后再试一次吗?