如何使用boot2docker在mac OS X中启用docker remote api rest?

我是docker工人。 我想使用docker远程API,但我失败了。 首先,我使用的是docker-java ,它是Remote API客户端库。 它抛出exception是:

The server failed to respond with a valid HTTP response 

更详细的是这里 。所以,我想知道什么是错的。 我使用远程restAPI来连接我的docker从这个教程 。 但是它还没有工作。 我使用这个命令:

 curl -v http://192.168.59.103:2376/info 

并告诉我这些信息:

 * Hostname was NOT found in DNS cache * Trying 192.168.59.103... * Connected to 192.168.59.103 (192.168.59.103) port 2376 (#0) > GET /info HTTP/1.1 > User-Agent: curl/7.37.1 > Host: 192.168.59.103:2376 > Accept: */* > * Connection #0 to host 192.168.59.103 left intact 

我认为它可以连接到这个IP,但没有有效的回应。 谁能明白这是什么意思? 然后,我在谷歌find问题。 有人说,它需要添加ip:2376到virtualBox。 我已经做了。 但是,它仍然没有工作。 我只是想用restAPI来请求我的docker。 当我使用这个命令时:

 curl -v http://192.168.59.103:2376/info 

我希望它能显示我正常的信息。 有人告诉我,我需要没有TLS。 但是,我不知道该怎么办。 请教我一步一步来。 我真的是新来的docker工人。 谢谢。 我使用的是Mac OS X,docker Api是1.19,客户端版本是1.7.0。

你正在尝试访问https端口上的docker,这个端口是2376,如果你想在没有https的情况下使用curl,你将不得不打开2375端口,这是正常的http,但是默认情况下它是被禁用的。

但是你可以通过第一次运行来启用它

 boot2docker ssh 

然后逐个运行这些命令

 cp /etc/init.d/docker ~/docker.bak sudo sed -i 's/DOCKER_TLS:=auto/DOCKER_TLS:=no/1' /etc/init.d/docker sudo /etc/init.d/docker stop sudo /etc/init.d/docker start 

这将禁用https,现在你可以做

 curl -v http://192.168.59.103:2375/info 

注意不同的端口!

你仍然想使用你的普通的docker命令,所以进入你的.bashrc并改变这个URL:

 export DOCKER_HOST=tcp://192.168.59.103:2376 export DOCKER_CERT_PATH=/Users/kevinsimper/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1 

 export DOCKER_HOST=tcp://192.168.59.103:2375 export DOCKER_CERT_PATH=/Users/kevinsimper/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=0