Docker Compose 主机名命令无法工作。

9
我无法使Docker Compose hostname 命令生效。
我正在运行一个简单的 docker-compose.yml:
version: '3'
services:
  redis1:
    image: "redis:alpine"
    hostname: redis1host
  redis2:
    image: "redis:alpine"
    hostname: redis2host

一旦我使用 docker-compose up 运行此命令后,我应该能够运行 docker-compose exec redis1 /bin/ash ,然后使用 ping redis2host 与另一个 Redis 容器进行通信,但是 ping 命令无法到达目的地。我可以使用 ping redis2 命令来 ping 另一个 Redis 容器。 ping redishost2 应该可以工作,不是吗?
1个回答

24

hostname指令仅仅是在容器内设置了主机名(也就是通过hostnameuname -n命令获取的名称),并不会为服务创建DNS别名。如果需要创建别名,可以使用aliases指令。由于该指令基于网络,因此需要明确指定网络,而不是使用compose的默认值,例如:

version: '3'
services:
  redis1:
    image: "redis:alpine"
    hostname: redis1host
    networks:
      redis:
        aliases:
          - redis1host
  redis2:
    image: "redis:alpine"
    hostname: redis2host
    networks:
      redis:
        aliases:
          - redis2host

networks:
  redis:

4
如果您不想在 docker-compose 中添加使用网络,只需使用 networks: default aliases ... 也可以起作用。 - Ng Sek Long

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