如何启用 docker remote api rest in mac OS X with boot2docker?

How to enable docker remote api rest in mac OS X with boot2docker?

我是 docker 的新手。我想使用docker远程api,但是我失败了。首先,我使用 docker-java 远程 API 客户端库。它抛出异常是:

The server failed to respond with a valid HTTP response

更详细的是here.So, I want to know what is wrong about it. I use the remote rest api to connect my docker from this tutorial。但它还没有奏效。我使用命令:

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,但不是有效的响应。谁能明白这是什么意思?然后我在google中找到问题。有人说需要给virtualBox加上ip:2376。我已经做了。但是,它仍然没有用。我只想使用休息 api 来请求我的 docker。当我使用这个命令时:

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

希望它能给我显示正常的信息。有人告诉我,我需要在没有 TLS 的情况下做到这一点。但是,我不知道该怎么做。请教我一步一步。我真的是 docker 的新手。谢谢。我用的是MacOSX。而dockerApi是1.19,客户端版本是1.7.0。

您正在尝试在 https 端口 2376 上访问 docker,如果您想在没有 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