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

时间:2015-07-07 17:01:07

标签: docker ibm-cloud

我们在Bluemix上使用IBM Container Service并发现了一个我们无法解释的奇怪之处 - 似乎docker pull和docker build在身份验证方面采取了不同的行为。

首先,强制性版本信息:

$ 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虚拟机,只有docker,ice(以及它的先决条件)和安装在其上的cf工具。我构建了一个简单的小节点示例来显示问题。只需创建这个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"]

现在,在进行冰登录之后,您还可以登录cf工具,尝试以下操作:

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

docker build将会死掉,最后一行是:

需要验证。

这不是很有用,所以如果你使用以下方式在调试模式下重启docker守护进程:

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

然后重新运行构建,您会发现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(我不这么认为......这总是在......之前有效)或者管理pull和build的方式有什么奇怪的区别?

1 个答案:

答案 0 :(得分:0)

这似乎是由于Docker中的known bug造成的。看起来他们在1.7.1中有issued a fix

您可以升级您的客户端并重试吗?