是否可以使用Docker Compose在Docker中建立微服务架构,从而使容器之间的通信使用默认的bridge
值驱动程序( ie 不会在network_mode
中的任何服务中指定任何docker-compose.yml
,但是所有容器都可以访问主机中的公共服务吗?
谢谢。
答案 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中所述。
请注意,如果您的主机服务未在所有接口上进行侦听,或者您具有限制性的防火墙配置,则可能需要进行更改才能使以上操作生效。