我正在尝试使用Docker API从另一台机器连接到docker守护进程。我能够成功执行以下命令:
docker -H=tcp://127.0.0.1:4243 images
但是当我使用真实的IP地址时不是:
docker -H=tcp://192.168.2.123:4243 images 2013/08/04 01:35:53 dial tcp 192.168.2.123:4243: connection refused
为什么使用非本地IP时无法连接?
我在Vagrantfile中使用带有以下内容的Vagrant VM: config.vm.network :private_network, ip: "192.168.2.123"
config.vm.network :private_network, ip: "192.168.2.123"
以下是iptables:
# Generated by iptables-save v1.4.12 on Sun Aug 4 01:24:46 2013 *filter :INPUT ACCEPT [1974:252013] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1511:932565] -A INPUT -p tcp -m tcp --dport 4243 -j ACCEPT COMMIT # Completed on Sun Aug 4 01:24:46 2013 # Generated by iptables-save v1.4.12 on Sun Aug 4 01:24:46 2013 *nat :PREROUTING ACCEPT [118:8562] :INPUT ACCEPT [91:6204] :OUTPUT ACCEPT [102:7211] :POSTROUTING ACCEPT [102:7211] :DOCKER - [0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER -A POSTROUTING -s 172.16.42.0/24 ! -d 172.16.42.0/24 -j MASQUERADE
遇到类似的问题,在这里我没有看到的一件事是您需要启动docker来侦听网络和unix套接字。主机上的所有常规docker(命令行)命令均使用套接字。
sudo docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -d &
将启动docker侦听主机上的任何IP地址以及典型的unix套接字。