Solución:
Si. En su archivo de redacción, puede especificar alias de red.
services:
db:
networks:
default:
aliases:
- database
- postgres
En este ejemplo, el db
el servicio puede ser alcanzado por otros contenedores en la red predeterminada usando db
, database
, o postgres
.
También puede agregar alias a los contenedores en ejecución mediante el docker network connect
comando con el --alias=
opción.
Docker compose tiene una función extra_hosts que permite agregar entradas adicionales al archivo de host del contenedor.
Ejemplo
docker-compose.yml
web1:
image: tomcat:8.0
ports:
- 8081:8080
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"
web2:
image: tomcat:8.0
ports:
- 8082:8080
web3:
image: tomcat:8.0
ports:
- 8083:8080
Demuestre las entradas del archivo de host
Ejecute docker compose con la nueva función de red de docker 1.9:
$ docker-compose --x-networking up -d
Starting tmp_web1_1
Starting tmp_web2_1
Starting tmp_web3_1
y mire el archivo de hosts en el primer contenedor. Muestra los otros contenedores, más las entradas personalizadas adicionales:
$ docker exec tmp_web1_1 cat /etc/hosts
..
172.18.0.4 web1
172.18.0.2 tmp_web2_1
172.18.0.3 tmp_web3_1
50.31.209.229 otherhost
162.242.195.82 somehost
Si entiendo su pregunta correctamente, puede pasar un nombre de host al que se hace referencia en el archivo / etc / hosts de su host a través de la marca –add-host:
$ docker run ... --add-host="droid"
El / etc / hosts de su host necesitaría la siguiente entrada: xx.xx.xx.xx droid
Por supuesto, será necesario acceder a xx.xx.xx.xx desde el interior del contenedor que acaba de comenzar con el comando ‘docker run’. Puede tener uno o más –add-host = “xyz”.
Más detalles sobre –add-host aquí:
http://docs.docker.com/v1.8/reference/commandline/run/