如何从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