【问题标题】:Docker alternative to --network host on macOS and Windows在 macOS 和 Windows 上替代 --network 主机的 Docker
【发布时间】:2019-06-07 11:52:51
【问题描述】:

我有两个 docker 容器:

  • 数据库
  • 使用数据库的应用程序

我像这样运行我的数据库容器:

docker run --name my-db -p 127.0.0.1:3306:3306 my-db-image

我的应用容器是这样的:

docker run --name my-app --network host -it my-app-image

这在 Linux 上运行良好。我可以从主机系统和应用程序容器访问数据库。完美。

但是--network host 不适用于 Mac 和 Windows:

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

(来源:https://docs.docker.com/network/host/

我仍然可以从主主机通过127.0.0.1:3306 访问数据库,但我无法从应用容器访问它。

我该如何解决这个问题?如何让应用程序容器连接到数据库(并使用127.0.0.1:3306 继续从主主机访问数据库)?

我尝试过使用host.docker.internalgateway.docker.internal,但它不起作用。

在使用docker network create my-network 创建my-network 之后,我还尝试使用--network my-network 启动这两个容器,但它不起作用。

我不知道如何解决这个问题。

【问题讨论】:

  • 在 Windows 上,我认为您的 docker 容器将被分配 IP 地址(例如,192.168.99.100?),然后您将使用它从主机连接到容器,或者我猜是在容器之间。 .
  • 只要您从应用容器 (my-db:3306) 中按名称引用 db 容器,您的 docker network create my-network 选项就应该起作用。
  • 它不工作,很可能我的应用需要一个真实地址才能工作
  • 有什么理由不使用 docker-compose?特别是如果这些服务将始终一起运行。这允许一个文件运行两种服务并创建连接它们的网络。
  • @BrianWagner 没有具体原因。这是我第一次使用 docker,也许您可​​以推荐一个适合我需要的 docker compse 文件?

标签: docker docker-container docker-networking docker-network docker-run


【解决方案1】:

对于多个服务,通常更容易创建一个 docker-compose.yml 文件,该文件将启动所有服务以及连接它们所需的任何网络。

version: '3'
services:
  my-db:
    image: my-db-image
    ports:
      - "3306:3306"
    networks:
      - mynetwork

  my-app:
    image: my-app-image
    ports:
      - "8000:80"
    networks:
      - mynetwork

networks:
  mynetwork:

从项目文件夹中,运行 docker-compose updocker-compose up -d 以使服务在后台运行。

在这种情况下,Docker 的魔力提供了一个主机名为“mynetwork”的网络。它应该向该网络上的其他服务公开默认端口。如果要重新映射端口,则模式为 target:source。

我不知道您是否需要此处的“端口”配置。但我正在尝试将您的配置映射到撰写文件。另外我假设您需要在某个端口上公开应用程序;使用 8000,因为这是很常见的设置。

这里的参数是什么? Docker-compose reference

【讨论】:

  • 谢谢,这看起来确实比逐个运行容器更好。但是,从网络的角度来看,这不就相当于使用--network mynetwork吗?或者它以某种方式做更多的事情?因为我首先需要解决连接问题。
猜你喜欢
  • 2020-04-24
  • 1970-01-01
  • 2017-10-03
  • 2022-01-09
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多