Docker Mac替代--net = host

时间:2018-09-28 12:08:46

标签: macos docker host

根据此处的docker文档

https://docs.docker.com/network/host/

  

主机网络驱动程序仅适用于Linux主机,而Mac的Docker,Windows的Docker或Windows Server的Docker EE不支持该主机网络驱动程序。

在Mac上,人们使用什么替代品?

我的情况

  1. 我想运行一个将托管微服务的docker容器
  2. 微服务依赖于我也在通过docker运行的数据库
  3. 我认为运行微服务时可以在Mac上使用--net = host
  4. 但是微服务端口未暴露
  5. 我可以在微服务上覆盖数据库地址(默认为localhost)。
  6. 但是这需要强大的--env用法

最简单/最优雅的解决方案是什么?

1 个答案:

答案 0 :(得分:2)

最简单,最优雅的解决方案是使用名为bridge network的docker。 您可以像这样创建自定义网桥网络(默认为网桥):

docker network create my-network

此网络中部署的每个容器都可以使用容器名称相互通信。

$ docker run --network=my-network --name my-app ...
$ docker run --network=my-network --name my-database...

在上面的示例中,您可以使用my-database:port从应用程序内部连接到数据库。如果容器端口在Dockerfile中公开,则无需在主机上映射它,您可以将所有通信保留在自定义Docker桥接网络内部。

在大多数情况下,应用程序的端口已映射(例如:-p 80:80),因此localhost:80映射到了container:80,您可以从本地主机访问该应用程序。如果应用程序需要与数据库通信,则无需公开数据库的端口,也不必如上所述将其映射到localhost上。 只需在自定义网桥网络中保持app和db内部的通信即可。