OSX上的docker没有通过ssh返回容器输出,

时间:2014-03-13 18:26:04

标签: ssh docker

我使用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 psdocker images会返回一个空列表。如果我ssh到TinyCore VM实例并运行docker ps,我可以看到容器确实已启动并且正在运行,docker logs返回'hello world'日志输出。

接收输出回OSX主机需要做什么?

1 个答案:

答案 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