macos - Docker Mac 替代 --net=host

标签 macos docker host

根据此处的 docker 文档

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

The host networking driver only works on Linux hosts, and is not supported on Docker for Mac, Docker for Windows, or Docker EE for Windows Server.



在 Mac 上,人们使用哪些替代方案?

我的场景
  • 我想运行一个 docker 容器来托管微服务
  • 微服务依赖于我也通过 docker 运行的数据库
  • 我以为我可以在运行微服务时在 Mac 上使用 --net=host
  • 但是微服务端口没有暴露
  • 我可以覆盖微服务上的数据库地址(它们默认为 localhost)。
  • 但这涉及强大的 --env 用法

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

    最佳答案

    最简单、最优雅的解决方案是使用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您可以从本地主机访问该应用程序。如果应用程序需要与数据库通信,则不需要公开数据库的端口,也不必将其映射到本地主机上,如上所述。
    只需将应用程序和数据库之间的通信保持在您的自定义桥接网络内部即可。

    关于macos - Docker Mac 替代 --net=host,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52555007/

    相关文章:

    macos - 在 Mac 上安装 Caffe 错误 : "fatal error: ' cblas. h' 文件未找到”

    docker - “docker image ls”给出了巨大的<none>图像列表

    读取数据时Android bulkTransfer返回-1但缓冲区中确实有一些数据

    三星 Galaxy 10.1 平板电脑的安卓 USB 主机问题

    html - Chrome(Win) 和 Safari (OSX) 对于我的 html 看起来不同

    c++ - 使用 Core foundation 向 Mountain Lion 通知中心发送消息

    node.js - 由于 node-api@ELIFECYCLE,npm 启动失败

    android - Android sdkmanager为任何参数提供IllegalArgumentException

    javascript - Meteor mupx ssl 配置不起作用,仍然路由到端口 80

    dns - 为什么 Google 公共(public) DNS(8.8.8.8) 的 ping 延迟如此低?