我有两个VM(A和B),两者都安装了Ubuntu和docker。它们位于同一虚拟网络中。我想从B中访问A的docker守护进程。
为了实现这一目标,我将A的守护进程绑定到端口2375.为此,我添加了
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS
EnvironmentFile=-/etc/default/docker
到/lib/systemd/system/docker.service
和
DOCKER_OPTS="-H tcp://0.0.0.0:2375"
到/etc/default/docker
在B上我使用docker -H=192.168.71.129:2375 run hello-world
并收到docker: Cannot connect to the Docker daemon...
错误。
两台机器都禁用了iptables。
sudo docker -H 192.168.71.129:2375 run hello-world
在A
上工作。
sudo netstat -tunlp | grep docker
输出 A
tcp6 0 0 :::2375 :::* LISTEN 10363/docker
在this帖子中,我看到docker rest API有一个ping端点。如果我使用B
从echo -e "GET /_ping HTTP/1.1\r\n" | nc 192.168.71.129 2375
调用此端点,则会收到200 OK
代码。所以Enpoint是明确的。
你能给我一个提示,为什么B
上的Docker客户端无法连接到A
上的守护进程?
IP A
192.168.71.129
IP B
192.168.71.128
user@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
A
user@ubuntu:~$ docker -H 192.168.71.129:2375 version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
B
user@ubuntu:~$ docker -H 192.168.71.129:2375 version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
答案 0 :(得分:0)
除了代理设置外,一切都很好...... Docker使用systemproxy连接到IP的