Junior
Waarvoor dienen de commando's CMD en ENTRYPOINT in Docker?
sobes.tech AI
Antwoord van AI
CMD en ENTRYPOINT geven de instructie aan die wordt uitgevoerd bij het starten van de container.
Belangrijkste verschil:
CMD— instructie die gemakkelijk kan worden overschreven door argumenten bij het starten van de container.ENTRYPOINT— instructie die de hoofdopdracht van de container bepaalt. De argumenten die bij het starten worden doorgegeven, worden eraan toegevoegd. AlsCMDsamen metENTRYPOINTwordt gebruikt, wordtCMDeen argument voorENTRYPOINT.
Voorbeelden:
Docker met CMD:
FROM alpine
CMD ["echo", "Hallo, wereld!"]
Uitvoering:
# Zal "Hallo, wereld!" tonen
docker run <beeldnaam>
# Overschrijft `CMD`, toont "Dit is een andere opdracht"
docker run <beeldnaam> echo "Dit is een andere opdracht"
Docker met ENTRYPOINT:
FROM alpine
ENTRYPOINT ["echo"]
Uitvoering:
# Zal een lege regel tonen (echo zonder argumenten)
docker run <beeldnaam>
# Voegt argumenten toe aan `ENTRYPOINT`, toont "Hallo, wereld!"
docker run <beeldnaam> "Hallo, wereld!"
Docker met ENTRYPOINT en CMD:
FROM alpine
ENTRYPOINT ["echo"]
CMD ["Hallo, wereld!"]
Uitvoering:
# `CMD` wordt een argument voor `ENTRYPOINT`, toont "Hallo, wereld!"
docker run <beeldnaam>
# Argumenten overschrijven `CMD`, maar `ENTRYPOINT` blijft. Toont "Dit is een andere opdracht"
docker run <beeldnaam> "Dit is een andere opdracht"
Vergelijkingstabel:
| Kenmerk | CMD | ENTRYPOINT |
|---|---|---|
| Doel | Standaardcommando of argumenten | Hoofdcommando van de container |
| Overschrijven bij starten | Gemakkelijk overschreven door argumenten | Voegt argumenten toe aan eigen commando |
| Compatibiliteit met andere instructies | Kan argumenten voor ENTRYPOINT leveren |
Gebruikt CMD als zijn argumenten |
Beste praktijken:
- Gebruik
ENTRYPOINTals de afbeelding bedoeld is om een specifiek uitvoerbaar bestand uit te voeren (bijvoorbeeld een webserver). - Gebruik
CMDom standaardargumenten voorENTRYPOINTte bieden of om het commando aan te geven wanneer de afbeelding voor verschillende doeleinden wordt gebruikt. - Geef de voorkeur aan het "exec"-formaat (
["uitvoerbaar", "argument1", ...]) boven het "shell"-formaat (commando argumenten). Het "exec"-formaat start het proces niet in een shell, waardoor problemen met signalen en omgevingsvariabelen worden voorkomen.