Docker Compose - 访问本地网络

问题描述 投票:0回答:1

我的本地网络上有一些设备,我想通过 docker-compose 项目中的 IP 地址访问它们。如何允许我的 compose 堆栈中的容器访问本地网络?

docker docker-compose
1个回答
0
投票

要将 Docker 容器连接到主机本地网络上运行的 PostgreSQL 数据库等服务,您可以使用两种方法,具体取决于您的操作系统:

在 Linux 中使用主机网络模式

如果您运行Linux机器,则可以直接使用主机的网络,这将允许容器通过

localhost
访问本地运行的服务。

version: '3'
services:
  your_service:
    image: your_image
    network_mode: "host"

使用

network_mode: "host"
,您的容器可以使用
localhost
127.0.0.1
与数据库端口访问 PostgreSQL 数据库,就像从本地系统上运行的任何进程一样。

在 Windows 和 Mac 上使用
host.docker.internal

在 Windows 或 Mac 上,Docker 在虚拟机中运行,并且

network_mode: "host"
的行为有所不同。要访问本地 PostgreSQL 数据库,请使用特殊的 DNS 名称
host.docker.internal
,Docker 将其解析为主机的内部 IP 地址。

version: '3'
services:
  your_service:
    image: your_image
    environment:
      DATABASE_URL: "postgres://username:[email protected]:5432/dbname"

这允许您的容器使用

host.docker.internal
代替
localhost
到达在主机上运行的 PostgreSQL 服务器。

您可以阅读有关 docker 网络模式的更多信息这里

© www.soinside.com 2019 - 2024. All rights reserved.