V prvním článku „Vytvoření clusteru Docker Swarm ve službě Azure Container Service“ jsme diskutovali o vytvoření clusteru Docker Swarm ve službě Azure Container Service (ACS). Každý virtuální stroj (master nebo agent) má při vytvoření Swarmu spuštěný Docker. V tomto článku na pokračování probereme používání Dockeru na Swarmu vytvořeném ve službě Azure Container Service. Budeme diskutovat o použití samostatného Dockeru a služby režimu Docker Swarm. Tento článek má následující sekce:
- Nastavení prostředí
- Výpis informací o Dockeru
- Spuštění obrázku Hello World Docker
- Spuštění obrazu Nginx Docker
- Výpis kontejnerů Docker
- Přístup ke kontejneru Nginx Docker v prohlížeči
- Odebrání kontejneru Docker
- Inicializace režimu Docker Swarm
- Vytvoření služby Docker
- Výpis služeb Docker
- Výpis úkolů služby Docker
- Výpis kontejnerů Docker pro službu Docker
- Prozkoumávání protokolů generovaných kontejnerem služby Docker
- Závěr
Nastavení prostředí
Použijte stejné prostředí jako v prvním článku „Vytvoření Docker Swarm Cluster ve službě Azure Container Service“. Vytvořte cluster Swarm na ACS, jak je popsáno v článku. V tomto článku použijeme cluster Swarm sestávající ze tří hlavních uzlů a jednoho uzlu agenta ke spuštění samostatného kontejneru Docker a služby režimu Docker Swarm.
Výpis informací o dockeru
Spusťte Cloud Shell, jak je popsáno v článku „Vytvoření Docker Swarm Cluster ve službě Azure Container Service“. Připojte se k hlavnímu virtuálnímu počítači Swarm pomocí soukromého klíče SSH RSA, uživatelského jména a veřejné IP adresy hlavního serveru, jak je také popsáno v předchozím článku. Příkaz SSH pro připojení k hlavnímu virtuálnímu počítači je následující; soukromý klíč SSH RSA, uživatelské jméno a veřejná IP adresa by se pro různé uživatele lišily.
ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected]
Naváže se připojení a zobrazí se příkazový řádek pro hlavní virtuální počítač.
[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected]ítejte v Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-generic x86_64) * Dokumentace:https://help.ubuntu.com/ Systémové informace k Út 10. října 22:40:17 UTC 2017 Zatížení systému:0,27 Procesy:131 Využití /:4,2 % z 28,80 GB Přihlášení uživatelé:0 Využití paměti :2 % IP adresa pro eth0:172.16.0.5 Využití swapu:0 % IP adresa pro docker0:172.17.0.1 Graf těchto dat a správa tohoto systému na:https://landscape.canonical.com/ Získejte podporu cloudu s Ubuntu Advantage Cloud Host:http://www.ubuntu.com/business/services/cloud K dispozici je nová verze '16.04.3 LTS'. Spusťte „do-release-upgrade“ a upgradujte na něj. Poslední přihlášení:Út 10. října 22:40:17 2017 od 40.78.30.37
V zřízeném Swarmu v článku „Vytvoření Docker Swarm Clusteru ve službě Azure Container Service“ byly nakonfigurovány tři hlavní uzly. Počet hlavních virtuálních počítačů může být 1, 3 nebo 5. Při spuštění více hlavních virtuálních počítačů je příkaz SSH pro připojení ke každému z hlavních virtuálních počítačů stejný kromě portu SSH, který je 2200 pro 1 hlavní a 2201 pro 2 master, 2202 pro 3 master, 2203 pro 4 master a 2204 pro 5 master. U tří hlavních virtuálních počítačů se používají porty SSH 2200, 2201 a 2202. Chcete-li se připojit ke 2 hlavnímu, příkaz SSH je následující:
[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2201 [email protected]
A příkaz SSH pro připojení k hlavnímu zařízení 2 je následující:
[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2202 [email protected]
Démon Docker běží na 172.16.0.5:2375 . Chcete-li zobrazit informace o celém systému, spusťte informace o dockeru příkaz. Výstup (částečný) z příkazu je uveden:
[email protected]:~$ docker -H 172.16.0.5:2375 infoContainers:0 Běží:0 Pozastaveno:0 Zastaveno:0Obrázky:0Role:primárníStrategie:spreadNodes:1 swarm-agent-D50F231:23050.s. Správce:false Verze jádra:3.19.0-65-generic Operační systém:linuxArchitecture:amd64CPUs:2Celková paměť:7.145GiB
Spuštění obrázku Hello World Docker
Každý z virtuálních počítačů v ACS Swarm je hostitelem Docker a samostatný kontejner Docker lze spustit na libovolném virtuálním počítači Swarm. Jako příklad spusťte obraz Dockeru „hello-world“ na hlavním virtuálním počítači.
Obrázek Dockeru hello-world běží na hlavním virtuálním počítači Swarm a ne na Swarmu. Hlavní virtuální počítač je pouze jedním z virtuálních počítačů ve Swarmu. Docker Swarm poslouchá koncový bod 172.16.0.5:2375. Aby bylo možné spustit kontejnery Docker na Swarmu, musí být poskytnut koncový bod Swarm, jak probereme v další části. Když je kontejner Docker spuštěn na Swarmu, hlavní Swarm přiřadí agenta Swarm, na kterém bude kontejner Docker spouštět.
Spuštění obrazu Nginx Docker
ahoj svět Obrázek Docker použitý v předchozí části je velmi základní obrázek Dockeru s malou Dockerizací a pouze vydává zprávu. V této části spustíme samostatný kontejner s obrázkem Dockeru nginx pro server Nginx. Následující příkaz vytvoří kontejner Docker s názvem hello-nginx a zpřístupní port 80 na hostiteli.
docker run --name hello-nginx -d -p 80:80 nginx
Výstup z běhu dockeru příkaz je uveden:
[email protected]:~$ spuštění dockeru --name hello-nginx -d -p 80:80 nginxNelze najít obrázek 'nginx:latest' lokálnělatest:Načítání z knihovny/nginxbc95e04b23c0:Vytažení dokončeno110767cf704eff:FullIGest:SHA256:004AC1D5E791E705F12A17C80D7BB1E8F7F01AA7DCA7DEEEE 6E65A003465395552F3654D8552F3654D8552F3654D8552F3654D8552F3654D8552F3654D8552F3654M40552F304 BONIČNÍPředchozí spuštění dockeru příkaz spustí kontejner Docker na hlavním virtuálním počítači Swarm. spuštění dockeru příkaz lze spustit na Swarm poskytnutím IP a portu koncového bodu Swarm takto:
[email protected]:~$ docker -H 172.16.0.5:2375 run --name hello-nginx -d -p 80:80 nginxddcbc335988f7b5dba762b436bfde4c22d7391814d>Výpis kontejnerů Docker
Vypište kontejnery Docker na hlavním virtuálním počítači pomocí docker ps příkaz. ahoj-nginx Zobrazí se kontejner Docker. Kontejner správce Swarm, který není vytvořen uživatelem, ale je systémovým kontejnerem, se vytvoří při vytvoření Swarmu.
Poznámka redakce: Všimněte si prosím, že mnoho z následujících výpisů kódů je příliš širokých, aby se správně zobrazily. Posuňte prosím pole s kódem doprava, abyste viděli celý záznam. |
[email protected]:~$ docker ID OBRÁZKU psCONTAINER PŘÍKAZ VYTVOŘEN STAV JMÉNA PORTŮB3679edba090 nginx "nginx -g 'daemon..." před 3 sekundami Nahoru o 2 sekundy 0.0.0.0:80->80bb80/tcp6 hellobba20/tcp swarm:1.1.0 "/swarm manage --r..." před 5 minutami Nárůst o 3 minuty 0.0.0.0:2375->2375/tcp container_swarm_1
Kontejnery Docker na koncovém bodu Swarm mohou být uvedeny takto:
[email protected]:~$ docker -H 172.16.0.5:2375 ps -aID KONTEJNERU PŘÍKAZ OBRÁZKU VYTVOŘEN STAV NÁZVY PORTŮSddcbc335988f nginx "nginx -g 'daemon nahoru...":350 sekund před 5.016 sekundami 80->80/tcp swarm-agent-D50F2361000001/hello-nginx
Kontejner Docker běží na agentovi Swarm, jak je označeno názvem kontejneru Docker swarm-agent-D50F2361000001/hello-nginx .
Přístup ke kontejneru Nginx Docker v prohlížeči
Jak bylo uvedeno dříve, když je kontejner Docker spuštěn na Swarmu pomocí koncového bodu Swarm, hlavní Swarm naplánuje kontejner na jednoho z agentů Swarm ve Swarmu. Pro přístup k serveru Nginx běžícímu v kontejneru Docker na koncovém bodu Swarm je nutné použít veřejnou IP adresu agenta Swarm. Swarm, který jsme použili, má pouze jednoho agenta Swarm. Veřejnou IP agenta Swarm lze získat ze seznamu zdrojů, jak je znázorněno na obrázku 1.
Obrázek 1: Veřejná IP adresa Swarm Agent
Případně klikněte na Swarm agent Load balancer v Zdroje , jak je znázorněno na obrázku 2.
Obrázek 2: Swarm Agent Load Balancer
Na stránce podrobností agenta Swarm získejte IP adresu (viz obrázek 3).
Obrázek 3: IP adresa Swarm Agent
IP adresu lze také získat ze stránky s podrobnostmi o vyrovnávání zatížení agenta Swarm, jak je znázorněno na obrázku 4.
Obrázek 4: Swarm Agent Public IP na stránce Load Balancer
V prohlížeči na místním počítači přejděte na veřejnou IP adresu agenta Swarm. Zobrazí se uvítací stránka serveru Nginx, jak je znázorněno na obrázku 5.
Obrázek 5: Vyvolání serveru Nginx v prohlížeči
Odebrání kontejneru Docker
Chcete-li odebrat kontejner Docker, spusťte docker rm příkaz. Spuštěný kontejner Docker nelze odebrat. Nejprve zastavte kontejner Docker hello-nginx běžící na Swarmu.
[email protected]:~$ docker -H 172.16.0.5:2375 stop hello-nginxhello-nginx
Následně může být zastavený kontejner odstraněn pomocí docker rm .
[email protected]:~$ docker -H 172.16.0.5:2375 rm hello-nginxhello-nginx
Inicializace režimu Docker Swarm
Jak bylo uvedeno výše, Azure Container Service Swarm nemá ve výchozím nastavení povolený režim Swarm. Režim Swarm musí být inicializován pomocí docker swarm init příkaz.
[email protected]:~$ docker swarm init --advertise-addr 52.176.1.213Swarm inicializován:aktuální uzel (ia4uj7431stu8y0j5h2yvdp27) je nyní správcem.
Chcete-li do tohoto roje přidat pracovníka, spusťte následující příkaz:
připojení k docker swarm --tokenSWMTKN-1-5ksj7uqccgv1vnnmie09qmt191ldpupof4ihg4vhm083c20xsh -6uyq5653uo62e521bcoatzyyz52.176.277pre>Chcete-li k tomuto swarmu přidat správce, spusťte „docker swarm join-token manager“ a postupujte podle pokynů.
Seznam uzlů režimu Swarm pomocí docker node ls příkaz. Zobrazí se uzel správce Swarm.
[email protected]:~$ uzel dockeru lsID HOSTNAME STAV DOSTUPNOST MANAGER STATUSia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 Ready Active LeaderVytvoření služby Docker
Po inicializaci režimu Docker Swarm vytvořte službu Docker pomocí docker service create příkaz. Jako příklad vytvořte službu Docker sestávající ze dvou replik pomocí obrázku Docker alpine a ping docker.com.
[email protected]:~$ vytvoření služby docker --repliky 2 --name helloworld alpine ping docker.comtg1ywqiyei3jw9prco6890ol1Jako další příklad vytvořte službu Docker s obrazem Dockeru tutum/hello-world a zpřístupněte službu na hostiteli na portu 8080.
[email protected]:~$ vytvoření dockerové služby> --name hello-world> --publish 8080:80> --replicas 2> tutum/hello-world3e38c1595cddg0ckmoyasrnnuVýpis služeb Docker
Seznam služeb Docker s docker service ls příkaz. Zobrazí se dvě služby vytvořené v předchozí části.
[email protected]:~$ služba dockeru lsID JMÉNO REŽIM REPLIKACE OBRÁZKU PORTS3e38c1595cdd hello-world replikováno 2/2 tutum/hello-world:nejnovější *:8080->80/tqiyeig1 alpine:nejnovějšíVýpis úkolů služby Docker
Seznam úkolů služby Docker pro helloworld služba založená na obrázku Docker alpine .
[email protected]:~$ docker service ps helloworldID JMÉNO OBRÁZKOVÝ UZEL POŽADOVANÝ STAV CHYBA AKTUÁLNÍHO STAVU PORTS0mal82mskbge helloworld.1 alpine:latest swarm-master-D50F2361-0 Spuštěno 302 sekund test2waralklokxlaqzz master-D50F2361-0 Spuštěn Spuštěn před 32 sekundamiSeznam úkolů služby Docker pro hello-world služba založená na tutum/hello-world Obrázek dockeru.
[email protected]:~$ služba dockeru ps hello-worldID JMÉNO OBRÁZKOVÝ UZEL POŽADOVANÝ STAV CHYBA AKTUÁLNÍHO STAVU PORTSyok48ja4o835 hello-world.1 tutum/hello-world:latest swarm-master-D50F2361-0 Spuštěno5wglx Před 50 sekundami běží hello-world.2 tutum/hello-world:latest swarm-master-D50F2361-0 Běh Běh před 38 sekundamiVýpis kontejnerů Docker pro službu Docker
Kontejnery Docker pro službu Docker na hostiteli Docker ve Swarmu mohou být uvedeny s docker ps příkaz.
[email protected]:~$ docker psCONTAINER ID OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV JMÉNA PORTŮSb6b069102300 tutum/hello-world:latest "/bin/sh -c 'php-f..." před 6 minutami Nahoru o 6 minut 80/ tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum/hello-world:latest "/bin/sh -c 'php-f..." před 6 minutami Nahoru o 6 minut 80/tcp "hello-world.1.yok48jaco4o83jrdb4b4o83jr5b0 pingdocker.com" před 7 minutami Nahoru o 7 minut helloworld.2.iqz0bqkldxs2sg8ny50je7e7y92dab9f7ae97 alpine:latest "pingdocker.com" před 7 minutami Nahoru o 7 minut helloworld.1.0mal82mskbgecbcwh3opDocker kontejnery pro hello-world a helloworld služby budou uvedeny.
Prozkoumávání protokolů generovaných kontejnerem služby Docker
Protokoly vygenerované, pokud existují, v kontejneru Docker pro službu Docker, mohou být uvedeny u protokolů docker příkaz. Jako příklad získejte ID kontejneru pro službu alpine image a vypište protokoly:
[email protected]:~$ protokoly dockeru db4827da350bPING docker.com (34.201.187.190):56 datových bajtůJak ukazuje výstup, doména docker.com dostane ping a vymění se 56 bajtů dat.
Závěr
V tomto článku jsme diskutovali o používání Dockeru v clusteru Docker Swarm ve službě Azure Container Service. Na Swarmu jsme použili samostatné kontejnery Docker a služby Docker. Cluster Swarm na ACS zpřístupňuje koncový bod Swarm ke spuštění samostatného kontejneru Docker. Když jsou kontejnery Docker spuštěny na koncovém bodu Swarm, Swarm spouští samostatné kontejnery Docker na agentech Swarm. Režim Swarm není ve výchozím nastavení povolen a musí být inicializován na hlavním virtuálním počítači Swarm.