GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Vylepšete svou hru DevOps pomocí těchto příkladů běhu Dockeru

docker run command je jedním z prvních příkazů, které byste se měli po instalaci Dockeru naučit. Ale přemýšleli jste, jak jinak můžete použít docker run příkazy pro efektivní nasazení a správu vašich aplikací? Procházení jednoho příkladu spuštění Dockeru (docker run) by bylo skvělé. Ale hádejte co, v tomto tutoriálu získáte více!

V tomto článku se dozvíte, jak vylepšit hru DevOps pomocí příkladu spuštění Dockeru, který můžete použít ke zlepšení pracovního postupu.

Čtěte dál a nikdy se neztratíte, když znovu spustíte příkazy Dockeru!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud chcete sledovat, ujistěte se, že máte následující.

  • Počítač Linux – Tato ukázka používá Ubuntu 20.04, ale bude fungovat jakákoli distribuce Linuxu. Zde je návod, jak nainstalovat Ubuntu.
  • Docker nainstalovaný v počítači.
  • Uživatelský účet s právy root/sudo.

Příklad spuštění Dockeru č. 1:Interaktivní spuštění kontejneru

Možná spouštíte kontejnery už nějakou dobu, ale věděli jste, že existuje několik situací, kdy je vhodné spustit kontejner Docker v interaktivním režimu?

Docker vám umožňuje spouštět kontejnery v interaktivním režimu, když:

  • Řešíte problém a potřebujete vidět výstup příkazů provedených uvnitř kontejneru.
  • Experimentujete s novým příkazem Docker a chcete vidět výsledky příkazu v reálném čase.
  • V kontejneru spouštíte proces, který od vás vyžaduje ruční zadání.

Při provádění příkladu spuštění Dockeru ( docker run ) bez voleb, výchozí chování je spustit kontejner v interaktivním režimu. Když spustíte kontejner v interaktivním režimu, můžete vidět výstup příkazů, které spouštíte v kontejneru na vašem terminálu, jak jsou spouštěny.

1. Spuštěním následujícího příkazu spusťte kontejner (my_nginx ) v interaktivním režimu a publikovat (-p ) port 80 kontejneru na port 8080 vašeho hostitelského počítače. Název kontejneru můžete libovolně změnit.

Příkaz používá nginx obrázek z centra Docker k vytvoření kontejneru a automaticky se odstraní (--rm ) kontejneru, když je kontejner zastaven.

docker container run --rm --name my_nginx -p 8080:80 nginx

Protože používáte uživatele bez oprávnění root s práva sudo , při spouštění příkazů Dockeru není třeba přidávat sudo

Výstup protokolu webového serveru nginx uvidíte přímo ve svém terminálu, jak je znázorněno níže.

Spuštění interaktivního kontejneru poskytuje mnoho informací, ale možná dáváte přednost filtrování informací, které potřebujete. Pokud ano, připojte příznak -a a zadejte standardní proud (-a) pro kontejner, jak je znázorněno níže.

Zadáním standardního streamu sdělíte Dockeru, aby zobrazil pouze výstup stdout kontejneru my_nginx.

docker container run -a stdout --rm --name my_nginx -p 8080:80 nginx

Ve výchozím nastavení, pokud nezadáte příznak -a, jsou k terminálu připojeny stdin, stdout a stderr. Parametr -a přebírá následující argumenty a pomáhá uklidit váš výstup, abyste viděli pouze relevantní informace:

  • -a stdin – připojí stdin do kontejneru, přičemž všechny vstupy na vašem terminálu budou odeslány do kontejneru.
  • -a stdout – připojí stdout do kontejneru a zobrazí veškerý výstup generovaný kontejnerem do vašeho terminálu.
  • -a stderr – připojí stderr do kontejneru, zobrazení všech chybových zpráv generovaných kontejnerem do vašeho terminálu.

Níže můžete vidět, že výstup je nyní méně nepřehledný.

2. Dále otevřete další terminál a spusťte docker ps zobrazíte seznam kontejnerů běžících na vašem hostitelském počítači.

docker ps

Níže můžete vidět svůj kontejner my_nginx uvedený ve výstupu.

3. Nakonec spusťte curl příkaz níže k otestování webového serveru nginx.

curl http://localhost:8080

Níže můžete vidět, že výstup protokolu webového serveru nginx se zobrazí ve vašem terminálu (na levé straně), jakmile se výstup vygeneruje.

Příklad spuštění Dockeru č. 2:Spuštění kontejneru v odpojeném režimu

Právě jste se naučili spouštět své kontejnery v interaktivním režimu a vidět výstup v terminálu, jak se spouštějí. Pokud ale nehledáte výstupy kontejneru ve svém terminálu, můžete kontejner spustit v odděleném režimu.

V odpojeném režimu běží kontejner na pozadí a vy nevidíte výstup příkazů, které v kontejneru spouštíte ve svém terminálu.

Spuštěním následujícího příkazu spusťte kontejner (my_nginx ) v odděleném režimu (-d ).

docker container run --rm --name my_nginx -d -p 8080:80 nginx

Jakmile kontejner běží v odděleném režimu, Docker přesměruje výstup do protokolů kontejneru. V tomto okamžiku běží kontejner my_nginx ve výstupech příkazů na pozadí, jak je znázorněno níže.

Ve výstupu můžete také vidět jedinečné ID kontejneru. Toto ID můžete použít k připojení kontejneru nebo ke spuštění/zastavení/odstranění kontejneru.

Nyní spusťte docker ps pro zobrazení seznamu kontejnerů běžících na vašem hostitelském počítači.

Protože kontejner (my_nginx) běží na pozadí, můžete spouštět libovolné příkazy, aniž byste museli otevírat nový terminál.

docker ps

Uvidíte následující výstup, který ukazuje, že my_nginx kontejner nyní běží v odpojeném režimu.

Pokud z nějakého důvodu vaše webové servery NGINX nefungují správně, když váš kontejner běží v odděleném režimu, budete muset připojit svůj terminál k běžícímu kontejneru. Ke spuštěnému kontejneru se můžete připojit spuštěním docker attach příkaz následovaný ID nebo názvem kontejneru (my_nginx ), jak je uvedeno níže.

docker container attach my_nginx

Jak vidíte níže, úspěšně jste se připojili k my_nginx kontejner. Nyní můžete zjistit hlavní příčinu problému a opravit ji.

Vytvoření překlenovací sítě

Jednou z výhod používání Dockeru je, že spravuje síť vašich kontejnerů za vás. S Dockerem se nemusíte starat o konfiguraci sítě. Docker za vás nastaví síť automaticky. Včetně vytváření sítí, připojování kontejnerů k sítím a správy IP adres.

Podívejte se, jak Docker nastavuje síť pro vaše kontejnery a vytváří mostovou síť.

1. Spusťte docker příkaz níže ke spuštění kontejneru Ubuntu s plným přístupem k síťovým zdrojům na hostitelském počítači (--net=host ), což je užitečné pro ladění.

Volby -ti říkají Dockeru, aby ponechal kontejner v interaktivním režimu. Tuto volbu musíte zadat, když pracujete s prostředím Bash. Spuštění tohoto příkazu jako v části „Interaktivní spuštění kontejneru“ nefunguje.

docker run -ti --rm --net=host ubuntu bash

2. Dále spusťte apt update příkaz v kontejneru pro aktualizaci seznamu balíčků.

apt update -y

3. Spusťte níže uvedený příkaz pro install bridge-utils balík. Tento balíček je potřebný k vytvoření a správě přemosťovacích zařízení.

apt install bridge-utils

4. Nyní spusťte následující brctl show příkaz k zobrazení seznamu mostních sítí ve vašem systému.

brctl show

Zobrazí se seznam přemosťovacích sítí podobný následujícímu výstupu. Všimněte si, že existuje přemosťovací zařízení s názvem docker0. Tato síť je virtuální síť, kterou Docker používá k vytváření virtuálních sítí pro vaše kontejnery, pokud neurčíte vlastní přemosťovací virtuální síť.

5. Otevřete jiný terminál a spusťte docker network příkaz níže k vytvoření nové sítě. Síť můžete pojmenovat jinak, ale v tomto tutoriálu se síť jmenuje my-ata-network .

docker network create my-ata-network

Zobrazí se vám jedinečné ID sítě, jak je uvedeno níže. Poznamenejte si ID sítě, protože jej později přiřadíte k novému ID sítě mostu (krok šest).

6. Vraťte se do svého kontejnerového terminálu Ubuntu a spusťte následující příkaz pro zobrazení seznamu mostní sítě (show ) znovu ve vašem systému.

brctl show

Jak je ukázáno níže, ve výstupu uvidíte novou mostovou síť s názvem br-d9ba7f94ac73. Můžete vidět, že část d9ba7f94ac73 odpovídá ID sítě vrácenému v kroku 5.

Tento výstup potvrzuje, že Docker vytvořil novou síť mostu s názvem my-ata-network a přidal do této sítě kontejner Ubuntu.

Příklad spuštění Dockeru č. 3:Spuštění kontejneru s přesměrováním portů

Docker používá vestavěné funkce brány firewall linuxového jádra, konkrétně iptables příkaz k vytvoření pravidel brány firewall. Tato pravidla brány firewall řídí, kdy jsou pakety odesílány mezi mosty, a jsou tak dostupné pro kontejnery připojené k těmto mostům.

Podívejte se, jak Docker dosahuje přesměrování portů pod kapotou pomocí iptables .

1. Spusťte následující příkaz pro spuštění privilegovaného kontejneru Ubuntu (--privileged=true ) s plným přístupem ke všem síťovým zdrojům na hostiteli, včetně přesměrování portů.

docker run -ti --rm --net=host --privileged=true ubuntu bash

2. Dále spusťte níže uvedený příkaz pro update seznam balíčků a install iptables .

apt update && apt install iptables

3. Spusťte iptables příkaz níže na privilegovaném kontejneru Ubuntu k seznamu (-L ) nat pravidlo tabulky.

iptables -n -L -t nat

To, co můžete vidět níže, jsou pouze výchozí pravidla dodávaná s Ubuntu.

4. Nyní spusťte níže uvedený příkaz a spusťte Ubuntu kontejner s přesměrováním portů vašemu hostiteli na portu 8080 .

docker run -ti --rm -p 8080:8080 ubuntu bash

5. Nakonec znovu spusťte iptables příkaz níže pro zobrazení nat pravidlo tabulky.

iptables -n -L -t nat

Níže si všimněte, že je přidáno nové pravidlo, které přepošle všechny pakety z portu hostitele (8080) na port kontejneru (8080). Můžete vidět, že odhalení portů v Dockeru je pouze přesměrování portů na síťové vrstvě.

Vytvoření uživatelem definované sítě

Vaše zkouška Docker DCA vás může požádat o vytvoření mostních sítí pro vývojáře. Jak? Pomocí docker network můžete vytvořit mostovou síť (uživatelem definovanou virtuální síť). docker network poskytuje způsob, jakým mohou kontejnery v různých sítích komunikovat.

1. Spusťte docker network příkaz níže k vytvoření nové přemosťovací sítě s názvem ata-app-net pomocí bridge Řidič.

docker network create --driver bridge ata-app-net

2. Dále spusťte následující příkaz pro výpis (ls ) mostních sítí na vašem hostiteli.

docker network ls

Všimněte si níže, že byla vytvořena nová uživatelsky definovaná mostová síť s názvem ata-app-net.

3. Pro zobrazení spusťte níže uvedený příkaz (inspect ) podrobnosti o ata-app-net mostní síť.

docker network inspect ata-app-net

Níže si všimněte, že síť mostu ata-app-net má jednu podsíť (172.21.0.0/16). Tato podsíť je automaticky přiřazena, když vytvoříte přemosťovací síť. Můžete také vidět ovladač (most) spojený se sítí mostu.

4. Nyní spusťte tento příklad spuštění Dockeru ( docker run ) níže, chcete-li spustit několik alpinských kontejnerů na vašich uživatelsky definovaných mostních sítích, abyste se pokusili vzájemně pingovat.

docker run -dit --name ata-app1 --network ata-app-net alpine ash

5. Spusťte docker ps příkaz k zobrazení seznamu běžících kontejnerů.

docker ps

Jak vidíte níže, oba kontejnery jsou nyní spuštěny.

6. Znovu spusťte níže uvedený příkaz docker network a inspect vaše ata-app-net mostová síť.

docker network inspect ata-app-net

Níže můžete vidět, že vaše dva kontejnery jsou nyní připojeny k síti mostu ata-app-net spolu se svými IP adresami a názvy.

7. Nyní spusťte docker container attach níže a připojte se k vaší ata-app1 kontejner.

docker container attach ata-app1

8. Odešlete příkaz ping na ata-app2 abyste ověřili, že kontejnery mohou mezi sebou komunikovat.

ping ata-app2

9. Dále odešlete příkaz ping na google.com abyste ověřili, že ata-app1 umí komunikovat s internetem.

ping google.com

10. Nakonec opakujte kroky sedm až devět a připojte se k ata-app2 a ping ata-app1 .

Nezapomeňte stisknout CTRL + PQ, abyste se odpojili od kontejneru ata-app1 a ponechali jej spuštěný. Jinak se kontejner zastaví a když odešlete příkaz ping ata-app1 z ata-app2, příkaz ping selže.

docker container attach ata-app2
ping ata-app1
ping google.com

Níže vidíte, že všechny pakety jsou přenášeny a přijímány, což potvrzuje, že oba kontejnery mohou komunikovat mezi sebou a s internetem.

Závěr

V tomto tutoriálu jste se naučili mnoho příkladů spuštění Dockeru ( docker run ) můžete použít k usnadnění nasazení a správy aplikací. Nyní můžete Docker používat efektivněji, když pochopíte, jak docker run s a jak Docker nastavuje sítě pro vaše kontejnery.

V tuto chvíli již víte, jak využít příklad spuštění Dockeru ( docker run ) příkazy ke zvýšení vaší hry DevOps.

S těmito znalostmi, proč nenasadit své aplikace efektivněji a škálovatelnějším způsobem?


Docker
  1. Jak spustit program uvnitř kontejneru Docker?

  2. Jak nasadit kontejner nginx s Dockerem na Linode

  3. Jak spustit příkaz na spuštěném kontejneru Docker

  1. Nainstalujte ModSecurity s Apache v kontejneru Docker

  2. Jak spustit Nginx v kontejneru Docker:Průvodce krok za krokem

  3. Jak spustit MySQL v kontejneru Docker

  1. Jak používat příkaz Docker Run s příklady

  2. Vytvoření prvního kontejneru Docker Windows Server Container

  3. Docker Run vs Start vs Create:Rozdíl je vysvětlen