如何从另一台机器连接到Docker API? [英] How to connect to Docker API from another machine?

查看:121
本文介绍了如何从另一台机器连接到Docker API?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用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拨打tcp 192.168.2.123:4243:连接拒绝

为什么在使用非本地IP时无法连接?



我在Vagrantfile中使用Vagrant VM,其中包含以下内容: config.vm.network:private_network,ip:192.168.2.123



以下是iptables:

 #由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
#完成日期8月4日01:24:46 2013
#生成者iptables-save v1.4.12 on Sun Aug 4 01:24:46 2013
* nat
:PREROUTI NG 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套接字。 / p>

I'm trying to use the Docker API to connect to docker daemon from another machine. I am able to do this command successfully:

docker -H=tcp://127.0.0.1:4243 images

But NOT when I use the real IP address:

docker -H=tcp://192.168.2.123:4243 images
2013/08/04 01:35:53 dial tcp 192.168.2.123:4243: connection refused

Why can't I connect when using a non-local IP?

I'm using a Vagrant VM with the following in Vagrantfile: config.vm.network :private_network, ip: "192.168.2.123"

The following is 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

解决方案

Came across a similar issue, one thing I don't see mentioned here is you need to start docker to listen to both the network and a unix socket. All regular docker (command-line) commands on the host assume the socket.

sudo docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -d &

will start docker listening to any ip address on your host, as well as the typical unix socket.

这篇关于如何从另一台机器连接到Docker API?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆