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

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

我希望能够从docker集装箱内访问它。

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

 curl xyz.example.com 

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

另外,我正在使用docker-compose。

我想你的容器不知道你的xyz.example.com因为它是在你的主机的/etc/host (你说它是一个私有的服务器)?

然后你可以添加主机作为extra_host

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

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

并运行你docker-compose.ymlreplaceHOST_BRIDGE_IPdocker-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的虚拟主机parsing。

编辑:这似乎有点矫枉过正给我,任何人有更好的build议?

这可能不是直接路由到主机的networking。 这个问题可能有帮助。