【问题标题】:Docker Compose Set Linux Docker Host IP Address in Container's /etc/hostsDocker Compose 在容器的 /etc/hosts 中设置 Linux Docker 主机 IP 地址
【发布时间】: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


【解决方案1】:

你可以试试:

DOCKER_HOST=$(python -c 'import socket;print(socket.gethostbyname(socket.gethostname()))') docker-compose up -d

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2018-11-13
    • 2016-12-02
    相关资源
    最近更新 更多