Docker Compose网络:可访问主机的网桥驱动程序

时间:2019-02-22 22:50:25

标签: docker networking docker-compose

是否可以使用Docker Compose在Docker中建立微服务架构,从而使容器之间的通信使用默认的bridge值驱动程序( ie 不会在network_mode中的任何服务中指定任何docker-compose.yml,但是所有容器都可以访问主机中的公共服务吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

您的容器始终可以访问您的主机。

在Linux下,您可以只使用容器内默认网关的地址。这将是容器所连接的主机上网桥的地址。在所有接口上侦听的任何主机服务将在此地址可用。假设您的容器安装了iproute软件包,则可以使用以下方式获取网关地址:

ip route | awk '$1 == "default" {print $3}'

您当然可以使用任何主机接口的地址,并将其作为环境变量(docker run -e HOSTADDR=192.168.23.5 ...)进行传递;使用网关地址很方便,因为可以从容器内部发现它。

在适用于MacOS的Docker或适用于Windows的Docker下,您可以使用特殊的主机名host.docker.internal来引用该主机,例如here中所述。

请注意,如果您的主机服务未在所有接口上进行侦听,或者您具有限制性的防火墙配置,则可能需要进行更改才能使以上操作生效。