我使用boot2docker(v0.6)在OSX 10.9上运行docker(v0.9.0)。一切都正常建立。我可以在TinyCore VM中正常使用docker。但是,在OSX中我可以向docker deamon发出命令,但我没有收到任何输出。我也无法检索有关容器或进程的信息。例如,我可以从OSX运行:
docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
我确实收到了容器ID,但是运行docker ps
或docker images
会返回一个空列表。如果我ssh到TinyCore VM实例并运行docker ps
,我可以看到容器确实已启动并且正在运行,docker logs
返回'hello world'日志输出。
接收输出回OSX主机需要做什么?
答案 0 :(得分:0)
问题来自于您的Docker客户端(在OS X上)比您的服务器(在boot2docker VM中)更新。
Docker API使用语义版本控制,因此每次调用都是对URL的HTTP请求,如下所示:
/v1.10/containers/create…
服务器处理所有版本的API,因此如果您使用旧客户端(旧的CLI版本或专为旧版Docker设计的程序),它仍然可以正常工作,因为最新的Docker知道如何处理例如/v1.3/blahblahblah
。
但是,如果您使用较旧的服务器与较旧的服务器,它可能会发出/v1.12/…
的请求,而服务器只知道如何处理/v1.10/…
。在这种情况下,服务器会给你一个奇怪的答案,比如" Not Found"。
这显然令人困惑: - )
我们期待以下改进:
/vXXX
模式,如果XXX
是不受支持的版本,则可以发出解释性消息; 欢迎对Docker项目的贡献;虽然第二个选项实施起来可能有点棘手,但第一个选项应该相对简单;所以这可能是将你的名字添加到Docker贡献者列表的好方法:D