【发布时间】:2020-05-20 04:26:44
【问题描述】:
在使用Docker Compose时,在Docker容器的/etc/hosts文件中,当宿主机运行Linux时,如何确定和设置Docker宿主机的IP地址?我希望容器中的主机名像 DOCKER_HOST 来引用 Docker 主机。
Docker for Linux 还不支持host.docker.internal,这与 Docker for Windows 和 Docker for Mac 不同,所以我们需要一个替代方案。
--network host 不能在这里使用,因为我的目的是容器中的localhost 仍然必须引用容器本身。
Docker Compose 支持使用extra_hosts 在/etc/hosts 中添加主机名-IP 映射,但我无法弄清楚如何自动确定要使用的主机IP 地址。
version: '3'
services:
api:
build: .
ports:
- "8080:8080"
extra_hosts:
- "DOCKER_HOST:X.X.X.X" # <=== How do we automatically set this IP address?
是否可以像下面这样,在启动容器时不必手动定义 Docker 主机 IP 地址?
DOCKER_HOST=`command_to_get_host_ip` docker-compose up -d
或者我们可以为docker-compose.yml中的Docker主机设置一个静态IP吗?
【问题讨论】:
-
@RajSrujanJalem 认为我需要静态 IP 到 docker host 而不是容器
-
您可以使用
-e选项传递环境变量,或者您希望该命令获取主机IP? -
@Philippe 命令获取主机 IP 在这里非常有用
标签: linux docker ubuntu networking docker-compose