Docker:如何在docker容器中卷曲在主机上运行的本地服务器xyz.example.com

时间:2017-07-06 17:27:40

标签: curl docker

在我的主机上,我在nginx上运行了一个服务器xyz.example.com。它不是dockerized,外部世界无法访问,它只是用于本地开发环境。

我希望能够从docker容器中访问它。

例如,我希望能够在我的docker容器中执行以下操作:

curl xyz.example.com

并查看我在主机上运行命令时看到的相同输出。

另外,我使用的是docker-compose。

2 个答案:

答案 0 :(得分:1)

我猜您的容器不知道您的xyz.example.com,因为它是在您的主机/etc/host中声明的(您说它是私人服务器)?

然后您可以将主机添加为extra_host

services:
  some-service:
    extra_hosts:
      - "xyz.example.com:HOST_BRIDGE_IP"

extra_host会在容器的/etc/host中添加主机名映射。

在docker bridge中运行你的docker-compose.yml替换HOST_BRIDGE_IP的ip:

HOST_BRIDGE_IP=$(docker network inspect bridge \
  --format '{{range .IPAM.Config}}{{.Gateway}}{{end}}') \
&& sed -e "s/HOST_BRIDGE_IP/${HOST_BRIDGE_IP}/g" \
docker-compose.yml | docker-compose --file - up

这将允许基于服务器中的DNS的虚拟主机解析。

编辑:这对我来说有点矫枉过正,有人有更好的建议吗?

答案 1 :(得分:0)

它可能不会直接路由到主机网络。 This question可能有帮助。