在OS X上安装Docker虚拟机,但命令似乎失败

我在本地的Mac OS X机器上设置Docker,并遇到一些问题让它工作。 我已按照https://docs.docker.com/installation/mac/上的安装说明进行操作。 一切安装boot2docker工具似乎顺利,但在虚拟机运行后,Docker命令似乎什么都不做。 例如,

$ docker run ubuntu echo hello world 2014/06/17 08:20:54 Post http://localhost:4243/v1.12/containers/create: EOF 

每个命令都以EOF结尾,似乎并没有做到实际应该做的事情。 这是另一个:

 $ docker ps 2014/06/17 08:25:10 Get http://localhost:4243/v1.12/containers/json: EOF 

由boot2docker工具创build的VM也在运行:

 $ boot2docker status [2014-06-17 08:26:24] boot2docker-vm is running. 

我有一种感觉是东西没有正确设置,但是我一行一行的按照指示,看不到哪里出了问题。

任何帮助非常感谢,谢谢!

更新1

boot2docker版本:1.0.0或0.9.1(不确定 – 没有版本标志AFAICT)

 $ boot2docker ip Usage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download} 

在boot2docker实例上:

 $ sudo netstat -ntpl | grep docker tcp 0 0 :::2375 :::* LISTEN 743/docker $ docker --version Docker version 1.0.0, build 63fe64c 

更新2

我只是重新安装boot2docker,现在我肯定运行1.0.0。

 $ boot2docker version Client version: v1.0.0 Git commit: 2fef7b2 

我还在文档中重新运行了命令(与命令告诉我在命令行上设置DOCKER_HOST的内容相冲突,请参阅下文):

 $ boot2docker up 2014/06/17 18:25:43 Waiting for VM to be started... ............................. 2014/06/17 18:26:41 Started. 2014/06/17 18:26:41 Auto detection of the VM's IP address. 2014/06/17 18:26:41 To connect the Docker client to the Docker daemon, please set: 2014/06/17 18:26:41 export DOCKER_HOST=tcp://:4243 

但我仍然看到原来的问题。

 $ docker run ubuntu echo hello world 2014/06/17 18:28:29 Post http://127.0.0.1:4243/v1.12/containers/create: EOF 

然后我重新运行文档中提到的命令:

 $ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375 

现在看到这个:

 $ docker run ubuntu echo hello world 2014/06/17 18:31:39 Cannot connect to the Docker daemon. Is 'docker -d' running on this host? 

我应该提到的是,在OS X上运行docker -d发出以下消息:

 $ docker -d 2014/06/17 18:34:04 The Docker daemon is only supported on linux 

哪个帮助不大

有几件事要检查:

boot2docker的更新版本

检查你的boot2docker是否是最新的。 如果您已经通过Homebrew等应用程序安装,则可能正在运行较旧的版本。 通过https://github.com/boot2docker/osx-installer/releases查看官方发布。 确保在升级后运行boot2docker delete ,然后运行boot2docker init

更新了Docker客户端

运行一个与在boot2docker中运行的服务器版本匹配的Docker客户端可能是一个好主意。 如果您在boot2docker中运行Docker 1.0,请确保您拥有https://github.com/boot2docker/osx-installer/releases中的1.0客户端。

导出正确的端口

您的命令中的端口可能不正确。 你记得运行export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375像文档说的那样? 端口2375是Docker 1.0(boot2docker 0.9.1和1.0.0)的新默认值。

转发正确的端口

更新客户端的DOCKER_HOST后,可能会遇到boot2docker 0.9.1的问题,该问题使用错误的端口进行Docker TCP连接。 检查步骤:

  1. 使用boot2docker sshlogin到boot2docker虚拟机(密码是tcuser )。
  2. 然后使用sudo netstat -ntpl | grep docker检查监听端口 sudo netstat -ntpl | grep docker (大概2375 )。
  3. 现在打开VirtualBox,进入boot2docker虚拟机的设置,然后点击Port Forwardingbutton。
  4. 它应该匹配在boot2docker中侦听的端口(可能是2375 )。
  5. 如果端口不匹配,请尝试更新端口转发,然后再次尝试客户端。

安迪给我99%的路。 我把他的答案标记为接受的答案,但是我会在这里写下解决我的问题的方法。 安装boot2docker的正确版本(1.0.0)后,我仍然从任何Docker命令得到不正确的输出。

然后,我打开了VirtualBox并读取了端口,然后瞧,端口是不正确的。 但是,切换到正确的值并不能解决问题。

我决定重置虚拟机,因为旧的boot2docker可能设置不正确。 以下命令最终解决了这个问题。

 $ boot2docker delete $ boot2docker init $ export DOCKER_HOST=tcp://:2375