我无法让Docker Compose hostname
命令工作。
我正在运行一个简单的const newArray = Object.keys(data).map(key => data[key])
:
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
与其他Redis容器通信,但ping无法到达目的地。我可以使用ping redis2host
ping其他Redis容器。
ping redis2
应该有效,不是吗?
答案 0 :(得分:5)
hostname
指令只是设置容器内的主机名(即,为了响应hostname
或uname -n
命令而返回的名称)。它不会导致服务的DNS别名。为此,您需要aliases指令。由于该指令是按网络进行的,因此您需要明确网络而不是使用撰写默认值,例如:
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: