A instrução Dockerfile CMD sairá do contêiner logo após executá-lo
Quero definir algumas configurações quando meu contêiner iniciar, por isso estou usando shell scripts. Mas meu contêiner será fechado assim que meus scripts terminarem. Tentei com o modo -d sinalizador / desanexado, mas ele nunca será executado no modo desanexado.
Abaixo está o meu 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
Abaixo está o meu script de shell
#!/bin/bash
echo Hello-docker
Executar sem nenhum sinalizador
docker run hello-docker
Isso imprimirá 'Hello-docker' no meu console e sairá
Executar com sinalizadores -itd
docker run -itd hello-docker
e, como abaixo da saída do console, esse tempo também será encerrado em breve.:(
A diferença que vi está na seção COMMAND quando executo outras imagens. A seção de comando mostrará "/ bin / bash" e continuará no modo desanexado.
E quando eu executo minha imagem no contêiner com a seção COMMAND do script shell, mostrará "/ bin / sh -c / usr / loca" e Sair.
Quero executar o contêiner até não pará-lo manualmente.
EDITAR:
Após adicionar a instrução ENTRYPOINT no Dockerfile, isso não executará meu 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
Conforme a documentação do dockeraqui
O CMD será substituído ao executar o contêiner com argumentos alternativos; portanto, se eu executar a imagem do Docker com alguns argumentos, conforme abaixo, não executarei as instruções do CMD. :(
sudo docker run -it --entrypoint=/bin/bash <imagename>