我的本地网络上有一些设备,我想通过 docker-compose 项目中的 IP 地址访问它们。如何允许我的 compose 堆栈中的容器访问本地网络?
要将 Docker 容器连接到主机本地网络上运行的 PostgreSQL 数据库等服务,您可以使用两种方法,具体取决于您的操作系统:
如果您运行Linux机器,则可以直接使用主机的网络,这将允许容器通过
localhost
访问本地运行的服务。
version: '3'
services:
your_service:
image: your_image
network_mode: "host"
使用
network_mode: "host"
,您的容器可以使用 localhost
或 127.0.0.1
与数据库端口访问 PostgreSQL 数据库,就像从本地系统上运行的任何进程一样。
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 网络模式的更多信息这里