Sobes.tech
Junior

Na čo slúžia príkazy CMD a ENTRYPOINT v Docker?

sobes.tech AI

Odpoveď od AI

CMD a ENTRYPOINT určujú inštrukciu, ktorá sa vykoná pri spustení kontajnera.

Hlavný rozdiel:

  • CMD — inštrukcia, ktorú je možné ľahko prepísať argumentmi pri spustení kontajnera.
  • ENTRYPOINT — inštrukcia, ktorá nastavuje hlavnú príkaz kontajnera. Argumenty odovzdané pri spustení sa k nej pridávajú. Ak používate CMD spolu s ENTRYPOINT, CMD sa stáva argumentom pre ENTRYPOINT.

Príklady:

Docker s CMD:

FROM alpine
CMD ["echo", "Ahoj, svet!"]

Spustenie:

# Vypíše "Ahoj, svet!"
docker run <názov_obrázka>

# Prepíše `CMD`, vypíše "Toto je iný príkaz"
docker run <názov_obrázka> echo "Toto je iný príkaz"

Docker s ENTRYPOINT:

FROM alpine
ENTRYPOINT ["echo"]

Spustenie:

# Vypíše prázdny riadok (echo bez argumentov)
docker run <názov_obrázka>

# Pridá argumenty k `ENTRYPOINT`, vypíše "Ahoj, svet!"
docker run <názov_obrázka> "Ahoj, svet!"

Docker s ENTRYPOINT a CMD:

FROM alpine
ENTRYPOINT ["echo"]
CMD ["Ahoj, svet!"]

Spustenie:

# `CMD` sa stáva argumentom pre `ENTRYPOINT`, vypíše "Ahoj, svet!"
docker run <názov_obrázka>

# Argumenty prepíšu `CMD`, ale `ENTRYPOINT` zostáva. Vypíše "Toto je iný príkaz"
docker run <názov_obrázka> "Toto je iný príkaz"

Porovnávacia tabuľka:

Vlastnosť CMD ENTRYPOINT
Účel Predvolený príkaz alebo argumenty Hlavný príkaz kontajnera
Prepis pri spustení Ľahko prepísateľný argumentmi Pridáva argumenty k svojmu príkazu
Kompatibilita s inou inštrukciou Môže poskytovať argumenty pre ENTRYPOINT Používa CMD ako svoje argumenty

Najlepšie praktiky:

  • Používajte ENTRYPOINT, ak je obraz určený na spustenie konkrétneho spustiteľného súboru (napr. webový server).
  • Používajte CMD na poskytovanie predvolených argumentov pre ENTRYPOINT alebo na špecifikovanie príkazu, keď môže byť obraz použitý na rôzne účely.
  • Uprednostňujte formát "exec" ([ "spustiteľný_súbor", "argument1", ... ]) pred formátom "shell" (príkaz argumenty). Formát "exec" nespúšťa proces v shelli, čím sa zabraňuje problémom so signálmi a premennými prostredia.