Sobes.tech
Junior

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.