Android

Příkaz pro spuštění doku s příklady

Pros and cons of stable and unique tags in Docker image tagging | Azure Friday

Pros and cons of stable and unique tags in Docker image tagging | Azure Friday

Obsah:

Anonim

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í hodnota 0.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ýt rw (read-write) a ro (pouze pro čtení)). Pokud není zadána žádná možnost, bude výchozí hodnota rw .

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

Testing Docker Volumes

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řístavní dělník