如何从Docker容器内部连接到主机中的服务?
我有一个docker守护进程启动在主机监听一些IP地址和端口,说10.10.10.10,端口1234,然后我通过调用启动一个容器
sudo docker -H 10.10.10.10:1234 centos /bin/bash
同时,我在主机上运行一个web服务runnig,运行在端口8080上。然后从容器内部,我无法连接到这个服务器。 我试过了
curl http://10.10.10.10:8080
但有一个错误信息:
curl: (7) couldn't connect to host
但我可以访问其他机器的服务器,如http://10.10.10.11:8080看来,docker集装箱不能访问自己的主机中的服务? 有没有什么办法解决这一问题? 谢谢
这是在问题1143中讨论的, 可能有一天--link-host
选项 。
与此同时,博客文章“ 访问容器中的Docker主机服务器 ”列出了一些选项:
- 网关方法:
netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}'
netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}'
- IP方式:boot2docker的IP地址是192.168.59.103。
虽然没有办法反思主机的IP地址(AFAIK),但可以通过一个环境variables来传递:
docker@boot2docker:~$ docker run -i -t -e DOCKER_HOST=192.168.59.103 ubuntu /bin/bash root@07561b0607f4:/# env HOSTNAME=07561b0607f4 DOCKER_HOST=192.168.59.103
在“ networkingconfiguration ”中有其他选项,主机上的虚拟接口名为docker0
。