我无法获取 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
应该可以,不是吗?
最佳答案
hostname
指令只是设置容器内的主机名(即响应 hostname
或 uname -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:
关于Docker Compose 主机名命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46239662/