La instrucción CMD de Dockerfile saldrá del contenedor justo después de ejecutarlo
Quiero configurar alguna configuración cuando se inicia mi contenedor, para esto estoy usando scripts de shell. Pero mi contenedor se cerrará tan pronto como finalicen mis scripts, lo he intentado con el modo -d flag / detached pero nunca se ejecutará en modo detached.
Debajo está mi Dockerfile
FROM ubuntu:14.04
ADD shell.sh /usr/local/bin/shell.sh
RUN chmod 777 /usr/local/bin/shell.sh
CMD /usr/local/bin/shell.sh
A continuación se muestra mi script de shell
#!/bin/bash
echo Hello-docker
Corre sin ninguna bandera
docker run hello-docker
Esto imprimirá 'Hello-docker' en mi consola y saldrá
Ejecutar con banderas -itd
docker run -itd hello-docker
y como debajo de la salida de mi consola, esta vez también saldrá pronto.:(
La diferencia que vi está en la sección de COMANDO cuando ejecuto la sección de comandos de otras imágenes que mostrará "/ bin / bash" y continuará en modo separado.
Y cuando ejecuto mi imagen en el contenedor con el script de shell, la sección COMMAND mostrará "/ bin / sh -c / usr / loca", y Salir.
Quiero ejecutar el contenedor hasta que no lo detenga manualmente.
EDITAR:
Después de agregar la instrucción ENTRYPOINT en Dockerfile, esto no ejecutará mi script de shell :(
FROM ubuntu:14.04
ADD shell.sh /usr/local/bin/shell.sh
RUN chmod 777 /usr/local/bin/shell.sh
CMD /usr/local/bin/shell.sh
ENTRYPOINT /bin/bash
Según la documentación de la ventana acoplableaquí
CMD se anulará al ejecutar el contenedor con argumentos alternativos, por lo que si ejecuto la imagen de Docker con algunos argumentos como se muestra a continuación, no ejecutaré las instrucciones de CMD. :(
sudo docker run -it --entrypoint=/bin/bash <imagename>