Pros and cons of stable and unique tags in Docker image tagging | Azure Friday
Obsah:
- Příkaz pro spuštění doku
- Spusťte kontejner v popředí
- Spusťte kontejner v odpojeném režimu
- Po ukončení vyjměte kontejner
- Nastavte název kontejneru
- Publikování portů kontejnerů
- Sdílení dat (montážní svazky)
- Spusťte kontejner interaktivně
- Závěr
Docker je platforma, která vám umožňuje vyvíjet, testovat a nasazovat aplikace jako přenosné, soběstačné kontejnery, které fungují prakticky kdekoli.
Příkaz
docker run
vytvoří kontejner z daného obrázku a spustí kontejner pomocí daného příkazu. Je to jeden z prvních příkazů, se kterými byste se měli seznámit při zahájení práce s Dockerem., pomocí oficiálního obrázku Nginx ukážeme různé způsoby, jak spustit kontejner Docker.
Příkaz pro spuštění doku
Příkaz
docker run
má následující podobu:
docker run IMAGE
Název obrázku, ze kterého by měl být kontejner vytvořen, je jediným požadovaným argumentem pro příkaz
docker run
. Pokud obrázek není přítomen v místním systému, je stažen z registru.
Pokud není zadán žádný příkaz, spustí se při spuštění kontejneru příkaz uvedený v pokynech Dockerfile
CMD
nebo
ENTRYPOINT
.
Od verze 1.13 došlo k restrukturalizaci rozhraní Docker CLI a všechny příkazy byly seskupeny pod objekt, se kterým spolupracují.
Protože příkaz
run
interaguje s kontejnery, je nyní dílčím příkazem kontejnerového
docker container
. Syntaxe nového příkazu je následující:
docker container run IMAGE
Stará, před 1, 13 syntaxe je stále podporována. Pod kapotou je příkaz pro
docker run
alias pro
docker container run
. Uživatelům se doporučuje používat novou syntaxi příkazu.
Seznam všech možností
docker container run
lze nalézt na stránce dokumentace Docker.
Spusťte kontejner v popředí
Ve výchozím nastavení, pokud není k dispozici příkaz pro
docker run
, není v popředí spuštěn kořenový proces. To znamená, že standardní vstup, výstup a chyba z kořenového procesu jsou připojeny k relaci terminálu.
docker container run nginx
Na vašem terminálu se zobrazí výstup procesu nginx. Protože k webovému serveru nejsou žádná připojení, je terminál prázdný.
Chcete-li kontejner zastavit, ukončete běžící proces Nginx stisknutím
CTRL+C
Spusťte kontejner v odpojeném režimu
Chcete-li udržovat kontejner v chodu i po ukončení relace terminálu, spusťte jej v odpojeném režimu. Je to podobné jako u Linuxu na pozadí.
Pomocí volby
-d
spustíte odpojený kontejner:
docker container run -d nginx
050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa
Po ukončení kořenového procesu se odpojený kontejner zastaví.
Můžete spustit seznam spuštěných kontejnerů pomocí příkazu
docker container ls
.
Chcete-li terminál připojit k procesu kořenové jednotky odpojeného kontejneru, použijte příkaz
docker container attach
.
Po ukončení vyjměte kontejner
Při ukončení kontejneru ve výchozím nastavení jeho systém souborů v hostitelském systému přetrvává.
Volby
--rm
říkají příkazu
--rm
docker run
aby po automatickém ukončení kontejneru odstranil kontejner:
docker container run --rm nginx
Obrázek Nginx nemusí být nejlepším příkladem, jak vyčistit souborový systém kontejneru po ukončení kontejneru. Tato možnost se obvykle používá u kontejnerů v popředí, které provádějí krátkodobé úkoly, jako jsou testy nebo zálohy databáze.
Nastavte název kontejneru
V Dockeru je každý kontejner identifikován svým
UUID
a názvem. Ve výchozím nastavení, pokud není explicitně nastaveno, je název kontejneru automaticky generován démonem Docker.
Pomocí volby
--name
můžete kontejneru přiřadit vlastní název:
docker container run -d --name my_nginx nginx
Název kontejneru musí být jedinečný. Pokud se pokusíte spustit jiný kontejner se stejným názvem, zobrazí se vám podobná chyba:
docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.
Spusťte
docker container ls -a
a zobrazte seznam všech kontejnerů a podívejte se na jejich jména:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx
Smyslné názvy jsou užitečné pro odkazování na kontejner v síti Docker nebo při spouštění příkazů CLI ukotvitelného panelu.
Publikování portů kontejnerů
Ve výchozím nastavení, pokud nejsou publikovány žádné porty, je proces spuštěný v kontejneru přístupný pouze z vnitřku kontejneru.
Publikování portů znamená mapování portů kontejnerů na porty hostitelského stroje tak, aby byly porty dostupné pro služby mimo Docker.
Chcete-li publikovat port, použijte volby
-p
takto:
-p host_ip:host_port:container_port/protocol
- Pokud není
host_ip
žádnýhost_ip
se výchozí hodnota0.0.0.0
Pokud není zadán žádnýprotocol
, použije se výchozíprotocol
TCP.To publikování více portů použijte více možností-p
.
Chcete-li namapovat port TCP 80 (nginx) v kontejneru na port 8080 v hostitelském rozhraní localhost, spusťte:
docker container run --name web_server -d -p 8080:80 nginx
Můžete ověřit, zda je port publikován otevřením
http://localhost:8080
v prohlížeči nebo spuštěním následujícího příkazu
curl
na hostiteli Docker:
curl -I
Výstup bude vypadat asi takto:
HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes
Sdílení dat (montážní svazky)
Když je kontejner zastaven, všechna data vygenerovaná kontejnerem budou odstraněna. Docker Volumes jsou upřednostňovaným způsobem, jak data vytrvat a sdílet je ve více kontejnerech.
Chcete-li vytvořit a spravovat svazky, použijte volby
-p
takto:
-v host_src:container_dest:options
-
host_src
může být absolutní cesta k souboru nebo adresáři na hostiteli nebo pojmenovanému svazku.container_dest
je absolutní cesta k souboru nebo adresáři na kontejneru. Volby mohou býtrw
(read-write) aro
(pouze pro čtení)). Pokud není zadána žádná možnost, bude výchozí hodnotarw
.
Jak to funguje, vytvořme adresář na hostiteli a do něj vložte soubor
index.html
:
mkdir public_html
echo "Testing Docker Volumes" > public_html/index.html
Dále
public_html
adresář
public_html
do
/usr/share/nginx/html
v kontejneru:
docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx
Místo určení absolutní cesty do adresáře
public_html
$(pwd)
příkaz
$(pwd)
, který vytiskne aktuální pracovní adresář.
Pokud nyní v prohlížeči zadáte
http://localhost:8080
, měl by se zobrazit obsah souboru
index.html
. Můžete také použít
curl
:
curl
Spusťte kontejner interaktivně
Při řešení interaktivních procesů, jako je
bash
, použijte k zahájení kontejneru možnosti
-i
a
-t
.
Možnosti
-it
řeknou Dockerovi, aby zachoval standardní vstup připojený k terminálu a přidělil pseudotty:
docker container run -it nginx /bin/bash
K terminálu bude připojena skořápka kontejneru Bash a příkazový řádek se změní:
root@1da70f1937f5:/#
Nyní můžete komunikovat se skořepinou kontejneru a spouštět jakýkoli příkaz uvnitř kontejneru.
V tomto příkladu jsme zadali příkaz (
/bin/bash
) jako argument příkazu docker
docker run
který byl proveden místo příkazu uvedeného v souboru Dockerfile.
Závěr
Docker je standard pro balení a nasazení aplikací a nezbytnou součástí CI / CD, automatizace a DevOps.
Příkaz
docker container run
se používá k vytvoření a spuštění kontejnerů Docker.
Příkaz Echo v Linuxu s příklady
Příkaz echo je jedním z nejzákladnějších a nejčastěji používaných příkazů v systému Linux. Argumenty předané echo jsou vytištěny na standardní výstup.
Příkaz Curl v Linuxu s příklady
Curl je obslužný program příkazového řádku pro přenos dat z nebo na server navržený pro práci bez zásahu uživatele. V tomto tutoriálu vám ukážeme, jak používat nástroj zvlnění pomocí praktických příkladů a podrobných vysvětlení nejběžnějších možností zvlnění.
Příkaz pro Linux datum s příklady
Příkaz date zobrazí nebo nastaví systémové datum. Nejčastěji se používá k tisku data a času v různých formátech a výpočtu budoucích a minulých dat.