Úvod
Vstupní bod a CMD jsou instrukce v Dockerfile, které definují proces v obrazu Dockeru. Můžete použít jeden nebo kombinovat oba v závislosti na tom, jak chcete kontejner provozovat.
Jeden rozdíl je v tom, že na rozdíl od CMD
, nemůžete přepsat ENTRYPOINT
příkaz pouze přidáním nových parametrů příkazového řádku. Chcete-li přepsat ENTRYPOINT, musíte upravit docker run
příkaz podle konkrétní syntaxe.
V tomto tutoriálu se naučíte, jak přepsat ENTRYPOINT pomocí příkazu docker run.
Předpoklady
- Přístup k příkazovému řádku
- Uživatel s funkcí sudo privilegia
- Spuštěná instance Docker
- Stávající obrázek Docker
Přepsat ENTRYPOINT spuštěním dockeru
Abychom ilustrovali, jak přepsat tento příkaz, spustíme kontejner, který odráží zprávu Hello World
kombinací ENTRYPOINT a CMD v Dockerfile.
V Dockerfile, ENTRYPOINT
příkaz definuje spustitelný soubor, zatímco CMD
nastaví výchozí parametr.
FROM ubuntu
MAINTAINER sofija
RUN apt-get update
ENTRYPOINT [“echo”, “Hello”]
CMD [“World”]
Pokud z tohoto souboru vytvoříte obrázek a použijete jej ke spuštění kontejneru Docker, výstup zobrazí:
Výchozí CMD můžete snadno přepsat přidáním požadovaného parametru do docker run
příkaz:
sudo docker run [container_name] [new_parameter]
V níže uvedeném příkladu jsme změnili parametr CMD World
přidáním Sofija
na příkaz. Výsledkem je, že výstup zobrazí Hello Sofija
.
Můžete však chtít přepsat výchozí spustitelný soubor a například spustit shell uvnitř kontejneru. V takovém případě musíte použít --entrypoint
příznak a spusťte kontejner pomocí následující syntaxe:
sudo docker run --entrypoint [new_command] [docker_image] [optional:value]
Chcete-li přepsat výchozí echo zprávu v našem příkladu a spustit kontejner interaktivně, použijeme příkaz:
sudo docker run -it --entrypoint /bin/bash [docker_image]
Výstup nám ukazuje, že jsme nyní uvnitř kontejneru.