O que são entrypoint e cmd no contexto do Docker?
sobes.tech IA
Resposta da IA
ENTRYPOINT define a comando que será executada ao iniciar o contêiner. Se CMD ou parâmetros de comando forem passados ao executar docker run, eles são adicionados como argumentos a essa comando.
CMD fornece argumentos padrão para ENTRYPOINT ou é executado como um comando separado se ENTRYPOINT não estiver definido. Se parâmetros forem passados ao iniciar o contêiner, eles sobrescrevem o valor de CMD.
Diferenças:
| Característica | ENTRYPOINT | CMD |
|---|---|---|
| Propósito | Define o comando principal a executar | Fornece argumentos ou comando padrão |
| Sobrescrita | Requer docker run --entrypoint |
Pode ser sobrescrito pelos argumentos de docker run |
Uso com ENTRYPOINT |
Argumentos para ENTRYPOINT |
Comando padrão se não houver ENTRYPOINT |
Exemplos:
Com ENTRYPOINT e CMD:
# Dockerfile
FROM alpine:latest
ENTRYPOINT ["echo", "Hello"]
CMD ["World!"]
Ao executar docker run sua-imagem : Será executado echo Hello World!
Ao executar docker run sua-imagem Universo! : Será executado echo Hello Universo!
Apenas com CMD:
# Dockerfile
FROM alpine:latest
CMD ["echo", "Hello World!"]
Ao executar docker run sua-imagem : Será executado echo Hello World!
Ao executar docker run sua-imagem echo Hello Docker! : CMD será sobrescrito, e será executado echo Hello Docker!
Recomenda-se usar ENTRYPOINT para o arquivo executável e CMD para passar parâmetros padrão a esse arquivo.