Quiero actualizar mi /etc/hosts
archivo durante la "compilación de Docker".
Agregué la siguiente línea en Dockerfile pero no actualiza el /etc/hosts
archivo ni da ningún error.
RUN echo "192.168.33.11 mynginx" >> /etc/hosts
Necesito actualizar /etc/hosts
. ¿Alguien puede sugerir sobre esto?
docker
dockerfile
hosts
Prakash
fuente
fuente
Respuestas:
Con una versión más reciente de docker, esto podría hacerse con docker-compose y su
extra_hosts
directivaEn resumen: modifica
/etc/hosts
tu contenedor al ejecutarlo, no al construirlo.Con Docker 17.x +, se
docker build --add-host
menciona a continuación , pero, como se comentó en el número 34078 y en esta respuesta :Las soluciones mencionadas se refieren al docker-compose que sugería anteriormente:
fuente
docket exec -it <container name> /bin/bash
, luego actualizar el host contenedor de la ventana acoplable en / ect / host con su editor de línea de comando preferido (vim, emacs, nano, echo ''. >> />).No se puede modificar el archivo host de la imagen utilizando
echo
en elRUN
paso porque el demonio ventana acoplable mantendrá el archivo (/ etc / hosts) y su contenido (entrada hosts) cuando se inicia un contenedor de la imagen.Sin embargo, se puede utilizar lo siguiente para lograr lo mismo:
La clave a tener en cuenta aquí es el uso del
exec
comando como sugiere la documentación de la ventana acoplable. El uso de exec hará que el comando java sea PID 1 para el contenedor. Las interrupciones de Docker solo responderán a eso.Ver https://docs.docker.com/engine/reference/builder/#entrypoint
fuente
ENTRYPOINT
no es una instrucción para la imagen. Solo marca un punto de entrada cuando ejecutamos un contenedor desde esta imagen, lo que significa que la entrada de hosts existe solo después de que se ejecuta el contenedor. No creo que el requisito sea imprescindible. Debe haber algún malentendido.Creo que Docker agregó recientemente la
--add-host
bandera a la compilación de Docker, lo cual es realmente genial.[Editar] Así que esta función se actualizó el 17.04.0-ce
Para obtener más detalles sobre cómo utilizar
docker build
la--add-host
bandera, visite: https://docs.docker.com/edge/engine/reference/commandline/build/fuente
--add-host
función está disponible en Docker 12 en CentOS.Dado que esto todavía aparece como una primera respuesta en Google, contribuiré con una posible solución.
El comando tomado de aquí funcionó sorprendentemente para mí (Docker 1.13.1, Ubuntu 16.04):
fuente
Si esto es útil para alguien, la
HOSTALIASES
variable env funcionó para mí:fuente
Puedes hacerlo con el siguiente comando a la hora de ejecutar docker
docker run [OPTIONS] --add-host example.com:127.0.0.1 <your-image-name>:<your tag>
Aquí estoy mapeando
example.com
a localhost127.0.0.1
y su funcionamiento.fuente
Estoy usando AWS Elasticbeanstalk + Docker + Supervisord.
Respuesta rápida
Solo agregue un poco de código
Dockerfile
.fuente
Respuesta completa
hosts
archivo que desea agregar al contenedor de la ventana acoplable;hosts
archivo en el contenedor agregando la siguiente línea en elDockerfile
ENTRYPOINT
oCMD
oCRON
job, incorpore la siguiente línea de comando o al menos ejecútelo dentro del contenedor en ejecución:Dockerfile
porque la modificación se perderá:fuente
Puede usar la opción --add-host durante la ejecución de la ventana acoplable.
Para su caso, use: docker run --add-host mynginx: 192.168.33.11 [image_name]: [tag]
Esto actualizará su / etc / hosts
puede verificarlo usando los siguientes comandos:
si sh no funciona para usted, puede probar bash o / bin / sh o / bin / bash
fuente
fuente
Lo siguiente funcionó para mí al montar el archivo durante la ejecución de la ventana acoplable en lugar de la compilación de la ventana acoplable
fuente
Solo una respuesta rápida para ejecutar su contenedor usando:
una vez que el contenedor está abierto:
luego
y luego puedes
o:
o cualquier editor que te guste y ábrelo en vim, aquí puedes modificar, digamos, tu ip de inicio a 0.0.0.0
fuente