Docker Compose hostname命令不起作用

Ben*_*son 3 docker docker-compose

我无法让Docker Compose hostname命令工作.

我正在运行一个简单的docker-compose.yml:

version: '3'
services:
  redis1:
    image: "redis:alpine"
    hostname: redis1host
  redis2:
    image: "redis:alpine"
    hostname: redis2host
Run Code Online (Sandbox Code Playgroud)

一旦我运行它docker-compose up,我应该能够运行docker-compose exec redis1 /bin/ash,然后ping redis2host与其他Redis容器交谈,但ping只是没有到达目的地.我可以ping其他Redis容器ping redis2.

ping redishost2 应该工作,不是吗?

lar*_*sks 8

hostname指令只是在容器内设置主机名(即,为响应hostnameuname -n命令而返回的名称).它不会导致服务的DNS别名.为此,您需要别名指令.由于该指令是按网络进行的,因此您需要明确网络而不是使用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:
Run Code Online (Sandbox Code Playgroud)

  • 如果您不想在 docker-compose 中添加使用网络,只需使用 `networks:` `default` `aliases` ... 也可以 (3认同)