为什么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中发布了一个修复程序 。
你能升级你的客户端,然后再试一次吗?