Docker Compose: 将多个主机绑定到动态容器IP

5

我在docker-compose.yml中声明我的服务,如下所示:

wildfly:
  image: "myrepo/wildfly:latest"
  hostname: wildfly

因此,Compose将条目添加到 /etc/hosts:
172.18.0.4      wildfly

在Docker中,172.18.0.4会自动生成。

但是我需要将some.host.name绑定到生成的IP地址/etc/hosts,以便在/etc/hosts中有多个条目:

172.18.0.4      wildfly
172.18.0.4      some.host.name

我该怎么做呢?

我试着使用extra_hosts语法,但在docker-compose.yml中,我不知道将分配什么IP给容器。

有人遇到类似的问题吗?


你使用的 Docker 版本是什么?docker version - Tarun Lalwani
嗨,Tarun! 17.06.2-ce,构建cec0b72 - Max Vornovskykh
我已经在两个“wildfly”服务的“networks”中暂时添加了别名到“some.host.name”域部分。现在,在一个容器docker中,已经在“/etc/hosts”中添加了所需的条目,但在第二个容器中没有添加。奇怪的是,“some.host.name”正确地解析为相应容器的IP地址。对我来说有点神奇... - Max Vornovskykh
1个回答

7

您应该使用支持别名的Compose版本“3”。由于您已经使用了受支持的Docker版本。

version: '3'
services:
  wildfly:
    image: "myrepo/wildfly:latest"
    hostname: wildfly
    networks:
      default:
        aliases:
          - some.host.name

由于docker现在使用自己的内部DNS服务器,因此这不会添加主机条目。如果您需要使用多个compose文件才能访问服务。那么您应该创建一个外部网络。

docker network create commonnet

然后在您的撰写中使用以下内容。
version: '3'
services:
  wildfly:
    image: "myrepo/wildfly:latest"
    hostname: wildfly
    networks:
      commonnet:
        aliases:
          - some.host.name
networks:
  commonnet:
    external: true

谢谢,@TarunLalwani!你的回答帮了我很多。 - Max Vornovskykh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接