sql >> Databasteknik >  >> RDS >> Database

Använda Docker på Azure Container Service med Swarm Cluster

I den första artikeln, "Skapa ett Docker Swarm Cluster på Azure Container Service", diskuterade vi att skapa ett Docker Swarm-kluster på Azure Container Service (ACS). Varje virtuell maskin (master eller agent) har Docker igång när svärmen skapas. I den här fortsättningsartikeln kommer vi att diskutera användningen av Docker på svärmen som skapats på Azure Container Service. Vi kommer att diskutera att använda både fristående Docker och en Docker Swarm-lägestjänst. Den här artikeln har följande avsnitt:

  • Ställa in miljön
  • Information om dockningslistor
  • Köra en Hello World Docker-bild
  • Köra en Nginx Docker-bild
  • Lista Docker-containrar
  • Åtkomst till Nginx Docker Container i en webbläsare
  • Ta bort en Docker-behållare
  • Initiering av Docker Swarm Mode
  • Skapa en hamnartjänst
  • Anteckningar Docker Services
  • Lista Docker Service Tasks
  • Lista Docker-containrar för Docker Service
  • Utforska loggar som genereras av en Docker Service Container
  • Slutsats

Ställa in miljön

Använd samma miljö som i den första artikeln, "Creating a Docker Swarm Cluster on Azure Container Service." Skapa ett Swarm-kluster på ACS, som diskuteras i artikeln. I den här artikeln ska vi använda Swarm-klustret som består av tre huvudnoder och en agentnod för att köra en fristående Docker-behållare och en Docker Swarm-lägestjänst.

Information om dockningslistor

Starta Cloud Shell som diskuteras i artikeln "Skapa ett Docker Swarm Cluster på Azure Container Service." Anslut till en Swarm master-VM med en SSH RSA-privat nyckel, användarnamn och publik IP-adress för mastern, vilket också diskuterades i den tidigare artikeln. SSH-kommandot för att ansluta till master-VM är som följer; den privata SSH RSA-nyckeln, användarnamnet och den offentliga IP-adressen skulle vara olika för olika användare.

ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected]

En anslutning upprättas och en kommandotolk för huvud-VM visas.

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected]älkommen till Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-generic x86_64) * Dokumentation:https://help.ubuntu.com/ Systeminformation från och med ti okt 10 22:40:17 UTC 2017 Systembelastning:0,27 Processer:131 Användning av /:4,2% av 28,80GB Användare inloggade:0 Minnesanvändning :2 % IP-adress för eth0:172.16.0.5 Bytsanvändning:0 % IP-adress för docker0:172.17.0.1 Rita dessa data och hantera detta system på:https://landscape.canonical.com/ Få Cloud-support med Ubuntu Advantage Cloud Gäst:http://www.ubuntu.com/business/services/cloud Ny version '16.04.3 LTS' tillgänglig. Kör "do-release-upgrade" för att uppgradera till den. Senaste inloggning:Tis 10 okt 22:40:17 2017 från 40.78.30.37

Tre huvudnoder konfigurerades i Swarm som tillhandahålls i artikeln "Creating a Docker Swarm Cluster on Azure Container Service." Antalet master-VM:er kan vara 1, 3 eller 5. När du kör flera master-VM:er är SSH-kommandot för att ansluta till var och en av master-VM:erna samma utom för SSH-porten, som är 2200 för 1 master, 2201 för 2 master, 2202 för 3 master, 2203 för 4 master och 2204 för 5 master. Med tre master-VM:er är SSH-portarna som används 2200, 2201 och 2202. För att ansluta till en 2 master är SSH-kommandot som följer:

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2201 [email protected]

Och SSH-kommandot för att ansluta till master 2 är som följer:

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2202 [email protected]

Docker-demonen körs på 172.16.0.5:2375 . För att visa systemomfattande information, kör dockerinfo kommando. Utdata (delvis) från kommandot visas:

[email protected]:~$ docker -H 172.16.0.5:2375 infoBehållare:0 Kör:0 Pausad:0 Stoppad:0Bilder:0Roll:primärStrategi:spridningNoder:1 swarm-agent-D50F236100:100.100:100.100 Manager:false Kernel Version:3.19.0-65-genericOperativsystem:linuxArkitektur:amd64CPU:er:2Totalt minne:7,145GiB

Köra en Hello World Docker-bild

Var och en av de virtuella maskinerna i en ACS Swarm är en Docker-värd och en fristående Docker-behållare kan köras på vilken Swarm VM som helst. Som ett exempel, kör "hello-world" Docker-bilden på en master-VM.

[email protected]:~$ docker run hello-worldUnable to find image 'hello-world:latest' locallylatest:Pulling from library/hello-world5b0f327be733:Pull completeDigest:sha256:b2ba691d8aac9e5ac3644c0788e3d3823f9e97f757f01d2 ddc6eb5458df9d801Status:Downloaded newer image for hello- world:latestHej från Docker!Det här meddelandet visar att din installation verkar fungera korrekt.För att generera detta meddelande tog Docker följande steg:1. Docker-klienten kontaktade Docker-demonen. 2. Docker-demonen drog "hej-världen"-bilden från Docker Hub. 3. Docker-demonen skapade en ny behållare från den bilden som kör den körbara filen som producerar utdata du för närvarande läser. 4. Docker-demonen strömmade den utdata till Docker-klienten, som skickade den till din terminal. För att prova något mer ambitiöst kan du köra en Ubuntu-behållare med:$ docker run -it ubuntu bashDela bilder, automatisera arbetsflöden och mer med en gratis Docker ID:https://cloud.docker.com/För fler exempel och idéer, besök:https://docs.docker.com/engine/userguide/[email protected]:~$

Docker-bilden hello-world körs på Swarm master VM och inte på Swarm. Master-VM är bara en av virtuella datorer i Swarm. Docker Swarm lyssnar på ändpunkten 172.16.0.5:2375. För att köra Docker-containrar på Swarm måste Swarm-slutpunkten tillhandahållas, som vi kommer att diskutera i nästa avsnitt. När en Docker-behållare körs på en Swarm, tilldelar Swarm-mästaren en Swarm-agent att köra Docker-behållaren på.

Köra en Nginx Docker Image

hej-världen Docker-bilden som användes i föregående avsnitt är en mycket grundläggande Docker-bild med inte mycket Dockerisering och matar bara ut ett meddelande. I det här avsnittet kommer vi att köra en fristående behållare med Docker-bilden nginx för en Nginx-server. Följande kommando skapar en Docker-behållare som heter hello-nginx och exponerar port 80 på värden.

docker run --name hello-nginx -d -p 80:80 nginx

Utdata från dockerkörningen kommandot är listat:

[email protected]:~$ docker run --name hello-nginx -d -p 80:80 nginxKan inte hitta bilden 'nginx:latest' locallylatest:Hämtar från biblioteket/nginxbc95e04b23c0:Pull complete110767c6efullf7:Pull complete50408 completeDigest:sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee 6e65a03465392072Status:Downloaded newer image for nginx:latestb3679edba090ff41482f3754b4d852d295985b501f6fa2a08b46c04bd0014c2e

Den föregående dockerkörningen kommandot kör en Docker-behållare på Swarm master-VM. Dockerkörningen kommandot kan köras på Swarm genom att tillhandahålla Swarm endpoint IP och port enligt följande:

[email protected]:~$ docker -H 172.16.0.5:2375 run --name hello-nginx -d -p 80:80 nginxddcbc335988f7b5dba762b436bfde4c22d0111131148167badpre> 

Lista Docker-containrar

Lista Docker-behållarna på en master-VM med docker-ps kommando. hello-nginx Docker-container listas. En Swarm Manager-behållare, som inte är skapad av användaren utan är en systembehållare, skapas när en Swarm skapas.

Redaktörens anmärkning: Observera att många av följande kodlistor är för breda för att visas korrekt. Bläddra i kodrutan till höger för att se hela listan.
[email protected]:~$ docker psCONTAINER ID BILDKOMMANDO SKAPADE STATUSPORTAR NAMNb3679edba090 nginx "nginx -g 'daemon..." 3 sekunder sedan Upp 2 sekunder 0.0.0.0:80->82-nfcfxf/hello-nfcfa swarm:1.1.0 "/swarm hantera --r..." 5 minuter sedan Upp 3 minuter 0.0.0.0:2375->2375/tcp containers_swarm_1

Docker-behållarna på Swarm-slutpunkten kan listas enligt följande:

[email protected]:~$ docker -H 172.16.0.5:2375 ps -aCONTAINER ID BILDKOMMANDO SKAPADE STATUSPORTNAMNSddcbc335988f nginx "nginx -g 'daemon..." 1 030 sekunder sedan:36 sekunder sedan. 80->80/tcp swarm-agent-D50F2361000001/hello-nginx

Docker-behållaren körs på en Swarm-agent som indikeras av Docker-behållarens namn swarm-agent-D50F2361000001/hello-nginx .

Åtkomst till Nginx Docker Container i en webbläsare

Som diskuterats tidigare, när en Docker-behållare körs på Swarm med hjälp av Swarm-slutpunkten, schemalägger Swarm-mästaren behållaren på en av Swarm-agenterna i Swarm. För att komma åt Nginx-servern som körs i Docker-behållaren på Swarm-slutpunkten måste Swarm-agentens offentliga IP användas. Svärmen vi har använt har bara ett Swarm-medel. Swarm-agentens offentliga IP kan erhållas från resurslistan, som visas i figur 1.


Figur 1: Swarm Agent offentlig IP-adress

Alternativt kan du klicka på Swarm-agentens lastbalanserare i Resurser , som visas i figur 2.


Figur 2: Swarm Agent Load Balancer

På sidan med Swarm-agentinformation hämtar du IP-adressen (se figur 3).


Figur 3: IP-adress för Swarm Agent

IP-adressen kan också erhållas från Swarm-agentens lastbalanseringssida, som visas i figur 4.


Figur 4: Swarm Agent Public IP på lastbalanseringssidan

I en webbläsare på en lokal maskin, navigera till den offentliga IP-adressen för Swarm-agenten. Nginx-serverns välkomstsida visas, som visas i figur 5.


Figur 5: Anropar Nginx Server i en webbläsare

Ta bort en Docker-behållare

För att ta bort en Docker-behållare, kör docker rm kommando. En körande Docker-behållare kan inte tas bort. Stoppa först Docker-behållaren hello-nginx springer på svärmen.

[email protected]:~$ docker -H 172.16.0.5:2375 stop hello-nginxhello-nginx

Därefter kan den stoppade behållaren tas bort med docker rm .

[email protected]:~$ docker -H 172.16.0.5:2375 rm hello-nginxhello-nginx

Initiering av Docker Swarm Mode

Som diskuterats tidigare har Azure Container Service Swarm inte Swarm-läget aktiverat som standard. Svärmläget måste initieras med docker swarm init kommando.

[email protected]:~$ docker swarm init --advertise-addr 52.176.1.213Swarm initierad:nuvarande nod (ia4uj7431stu8y0j5h2yvdp27) är nu en manager.

För att lägga till en arbetare till denna svärm, kör följande kommando:

docker swarm join --tokenSWMTKN-1-5ksj7uqccgv1vnnmie09qmt191ldpupof4ihg4vhm083c20xsh -6uyq5653uo62e521bcoatzyyz52.176.1.213:237

För att lägga till en chef till denna svärm, kör "docker swarm join-token manager" och följ instruktionerna.

Lista svärmlägesnoderna med dockernoden ls kommando. Svärmhanterarens nod listas.

[email protected]:~$ docker nod lsID VÄRDNAM STATUS TILLGÄNGLIGHET MANAGER STATUSia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 Redo aktiv ledare

Skapa en dockningstjänst

Efter att ha initierat Docker Swarm-läget, skapa en Docker-tjänst med docker-tjänsten create kommando. Som ett exempel, skapa en Docker-tjänst som består av två repliker med Docker image alpine och pinga docker.com.

[email protected]:~$ docker service create--replicas 2 --name helloworld alpine ping docker.comtg1ywqiyei3jw9prco6890ol1

Som ett annat exempel, skapa en Docker-tjänst med Docker-bilden tutum/hello-world och exponera tjänsten på värden på port 8080.

[email protected]:~$ docker service create> --name hello-world> --publish 8080:80> --replicas 2> tutum/hello-world3e38c1595cddg0ckmoyasrnnu

Listing Docker Services

Lista Docker-tjänsterna med docker-tjänsten ls kommando. De två tjänsterna som skapades i föregående avsnitt listas.

[email protected]:~$ docker-tjänst lsID NAMN LÄGE REPLICAS IMAGE PORTS3e38c1595cdd hello-world replicated 2/2 tutum/hello-world:senaste *:8080->80/tcptye 2yw-world replicated 2/2y alpin:senaste

Lista Docker Service Tasks

Lista Docker-tjänstens uppgifter för helloworld tjänst baserad på Docker-bilden alpin .

[email protected]:~$ docker-tjänst ps helloworldID NAMN BILD NOD ÖNSKAD STAT AKTUELLT TILLSTÅND FEL PORTS0mal82mskbge helloworld.1 alpine:latest swarm-master-D50F2361-0 Löpning Löpning 33 sekunder helloqliqs200000000000000000 master-D50F2361-0 Löpning Löpning för 32 sekunder sedan

Lista Docker-tjänstens uppgifter för hej världen tjänst baserad på tutum/hello-world Docker-bild.

[email protected]:~$ docker service ps hello-worldID NAMN BILD NOD ÖNSKAD STAT AKTUELLT TILLSTÅND FEL PORTSyok48ja4o835 hello-world.1 tutum/hello-world:senaste swarm-master-D50F2361-0 sekund Running agoglwdx 038 seconds Running hello-world.2 tutum/hello-world:senaste swarm-master-D50F2361-0 Löpning Löpning för 38 sekunder sedan

Lista Docker-containrar för Docker Service

Docker-behållarna för en Docker-tjänst på en Docker-värd i Swarm kan listas med docker ps kommando.

[email protected]:~$ docker psCONTAINER ID BILDKOMMANDO SKAPADE STATUSPORTNAMNb6b069102300 tutum/hello-world:senaste "/bin/sh -c 'php-f..." 6 minuter sedan Upp 6 minuter 80/ tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum/hello-world:senaste "/bin/sh -c 'php-f..." för 6 minuter sedan Upp 6 minuter 80/tcp hello-world.1.yok88c48jldhnlate:alb48c4g473d5737335037330000000000000000 pingdocker.com" 7 minuter sedan Upp 7 minuter helloworld.2.iqz0bqkldxs2sg8ny50je7e7y92dab9f7ae97 alpine:latest "pingdocker.com" 7 minuter sedan Upp 7 minuter helloworld.1.0mal82mskbgecbcrwh3op18n 

Docker-containrar för hello-world och helloworld tjänster listas.

Utforska loggar som genereras av en Docker Service Container

Loggarna som genereras, om några, i en Docker-behållare för en Docker-tjänst kan listas med docker-loggarna kommando. Som ett exempel, skaffa container-ID för en alpin bildbaserad tjänst och lista loggarna:

[email protected]:~$ docker logs db4827da350bPING docker.com (34.201.187.190):56 databyte

Som utdata indikerar blir docker.com-domänen pingad och 56 byte data utbyts.

Slutsats

I den här artikeln diskuterade vi att använda Docker i ett Docker Swarm-kluster på Azure Container Service. Vi använde fristående Docker-containrar och Docker-tjänster på Swarm. Ett Swarm-kluster på ACS exponerar en Swarm-slutpunkt för att köra en fristående Docker-behållare. När Docker-behållare körs på Swarm-slutpunkten, kör Swarm fristående Docker-behållare på Swarm-agent(er). Swarm-läget är inte aktiverat som standard och måste initieras på en Swarm master-VM.


  1. Oracle IN vs finns skillnad?

  2. Åtgärda dataförlust med logfrakt med försenad återställning

  3. Dela upp strängen i rader Oracle SQL

  4. COUNT(*) från flera tabeller i MySQL