vagrant - 如何从另一台机器连接到 Docker API?

标签 vagrant iptables docker

我正在尝试使用 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"

以下是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 套接字。

关于vagrant - 如何从另一台机器连接到 Docker API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18038985/

相关文章:

bash - Ubuntu 在前台运行服务

docker - 启动容器进程导致 "exec:\"/tmp/installer.sh\": permission denied"

ssh - Vagrant up 一直要求输入密码

vagrant - 如何使用 packer 从 vmware 镜像创建一个 vagrant box

java - 在Android/Linux上设置透明的TCP代理问题

iptables - 防止整个网站下载?

apache - Vagrant - 在启动时启动 apache

当 f : 上的默认 vb 机器文件夹时 vboxmanage verr_path_not_found vagrant up

linux - libipq 性能问题

docker - 通过示例一起使用 Vagrant 和 Docker