如何从docker容器内连接到主机中的服务?

时间:2015-04-13 05:39:54

标签: docker containers

我在主机上启动了一个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容器无法访问自己的主机中的服务?有没有什么办法解决这一问题?感谢

1 个答案:

答案 0 :(得分:6)

issue 1143和那里might be one day a --link-host option讨论了这个问题。

与此同时,博文“Accessing the Docker Host Server Within a Container”列出了一些选项:

  • 网关方法:netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}'
  • IP方法:boot2docker ip地址为192.168.59.103。
  

虽然无法反省主机的IP地址(AFAIK),但您可以通过环境变量传递此信息:

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

Network Configuration”中还有其他选项,主机上的虚拟接口名为docker0