Sobes.tech
Junior

Cosa sono entrypoint e cmd nel contesto di Docker?

sobes.tech AI

Risposta dell'AI

ENTRYPOINT definisce il comando che verrà eseguito all'avvio del contenitore. Se CMD o parametri di comando vengono passati durante l'esecuzione di docker run, vengono aggiunti come argomenti a questo comando.

CMD fornisce argomenti predefiniti per ENTRYPOINT o viene eseguito come comando separato se ENTRYPOINT non è definito. Se vengono passati parametri all'avvio del contenitore, questi sovrascrivono il valore di CMD.

Differenze:

Caratteristica ENTRYPOINT CMD
Scopo Definisce il comando principale da eseguire Fornisce argomenti o comando predefinito
Sovrascrittura Richiede docker run --entrypoint Può essere sovrascritto dagli argomenti di docker run
Uso con ENTRYPOINT Argomenti per ENTRYPOINT Comando predefinito se ENTRYPOINT non è presente

Esempi:

Con ENTRYPOINT e CMD:

# Dockerfile
FROM alpine:latest
ENTRYPOINT ["echo", "Hello"]
CMD ["World!"]

Eseguendo docker run tua-immagine verrà eseguito echo Hello World! Eseguendo docker run tua-immagine Universo! verrà eseguito echo Hello Universo!

Solo con CMD:

# Dockerfile
FROM alpine:latest
CMD ["echo", "Hello World!"]

Eseguendo docker run tua-immagine verrà eseguito echo Hello World! Eseguendo docker run tua-immagine echo Hello Docker! sovrascrive CMD e verrà eseguito echo Hello Docker!

Si consiglia di usare ENTRYPOINT per il file eseguibile e CMD per passare parametri predefiniti a tale file.