¿Cómo configuro el nombre de host en Docker-compose?
En mi docker-compose.yml
expediente tengo lo siguiente. Sin embargo, el contenedor no recoge el valor del nombre de host. ¿Algunas ideas?
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
Cuando reviso el nombre de host en el contenedor, no contesta affy
.
A partir de la versión 3.0 y posteriores del archivo Docker Compose , solo puede usar la hostname
clave:
version: "3.0"
services:
yourservicename:
hostname: your-name
Descubrí que el nombre de host no era visible para otros contenedores cuando usaba docker run
. Esto resulta ser un problema conocido (quizás una característica más conocida), y parte de la discusión es:
Probablemente deberíamos agregar una advertencia a los documentos sobre el uso del nombre de host. Creo que rara vez es útil.
La forma correcta de asignar un nombre de host (en términos de redes de contenedores) es definir un alias como este:
services:
some-service:
networks:
some-network:
aliases:
- alias1
- alias2
Lamentablemente, esto todavía no funciona con docker run
. La solución es asignar un nombre al contenedor:
docker-compose run --name alias1 some-service
Y alias1
luego se puede hacer ping desde los otros contenedores.
ACTUALIZACIÓN: Como señala @grilix, debe utilizar docker-compose run --use-aliases
para que los alias definidos estén disponibles.