sql >> Database teknologi >  >> RDS >> Database

Brug af Docker på Azure Container Service med Swarm Cluster

I den første artikel, "Creating a Docker Swarm Cluster on Azure Container Service", diskuterede vi oprettelse af en Docker Swarm-klynge på Azure Container Service (ACS). Hver virtuel maskine (master eller agent) har Docker kørende, når sværmen oprettes. I denne fortsættelsesartikel skal vi diskutere brugen af ​​Docker på Swarm oprettet på Azure Container Service. Vi vil diskutere brugen af ​​både selvstændig Docker og en Docker Swarm-tilstandstjeneste. Denne artikel har følgende sektioner:

  • Indstilling af miljøet
  • Oplysninger om docker-fortegnelse
  • Køre et Hello World Docker-billede
  • Kørsel af et Nginx Docker-billede
  • Angivelse af Docker-containere
  • Adgang til Nginx Docker Container i en browser
  • Fjernelse af en Docker-container
  • Initialisering af Docker Swarm Mode
  • Oprettelse af en Docker-tjeneste
  • Angivelse af Docker Services
  • Angivelse af Docker-tjenesteopgaver
  • Angivelse af Docker-containere til Docker-tjenesten
  • Udforskning af logfiler genereret af en Docker Service Container
  • Konklusion

Indstilling af miljøet

Brug det samme miljø som i den første artikel, "Creating a Docker Swarm Cluster on Azure Container Service." Opret en Swarm-klynge på ACS, som diskuteret i artiklen. I denne artikel skal vi bruge Swarm-klyngen bestående af tre masterknudepunkter og en agentknude til at køre en selvstændig Docker-container og en Docker Swarm-tilstandstjeneste.

Oplysninger om docker-liste

Start Cloud Shell som diskuteret i artiklen "Creating a Docker Swarm Cluster on Azure Container Service." Opret forbindelse til en Swarm master VM ved hjælp af en SSH RSA privat nøgle, brugernavn og offentlige IP-adresse for masteren, som også diskuteret i den tidligere artikel. SSH-kommandoen til at oprette forbindelse til master VM er som følger; den private SSH RSA-nøgle, brugernavn og offentlige IP-adresse ville være forskellige for forskellige brugere.

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

En forbindelse oprettes, og en kommandoprompt for master-VM'en vises.

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected] til Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-generisk x86_64) * Dokumentation:https://help.ubuntu.com/ Systemoplysninger fra Tue Oct 10 22:40:17 UTC 2017 Systembelastning:0,27 Processer:131 Brug af /:4,2% af 28,80GB Brugere logget ind:0 Hukommelsesbrug :2 % IP-adresse for eth0:172.16.0.5 Swap-brug:0 % IP-adresse for docker0:172.17.0.1 Tegn disse data og administrer dette system på:https://landscape.canonical.com/ Få Cloud-support med Ubuntu Advantage Cloud Gæst:http://www.ubuntu.com/business/services/cloud Ny udgivelse '16.04.3 LTS' tilgængelig. Kør 'do-release-upgrade' for at opgradere til det.Sidste login:Tue Oct 10 22:40:17 2017 from 40.78.30.37

Tre masterknudepunkter blev konfigureret i Swarm'en, der er klargjort i artiklen "Creating a Docker Swarm Cluster on Azure Container Service." Antallet af master-VM'er kan være 1, 3 eller 5. Når du kører flere master-VM'er, er SSH-kommandoen til at oprette forbindelse til hver af master-VM'erne den samme bortset fra SSH-porten, som er 2200 for 1 master, 2201 for 2 master, 2202 for 3 master, 2203 for 4 master og 2204 for 5 master. Med tre master-VM'er er de brugte SSH-porte 2200, 2201 og 2202. For at oprette forbindelse til en 2-master er SSH-kommandoen som følger:

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

Og SSH-kommandoen for at oprette forbindelse til 2-masteren er som følger:

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

Docker-dæmonen kører på 172.16.0.5:2375 . For at vise systemdækkende information skal du køre docker-info kommando. Output (delvis) fra kommandoen er angivet:

[email protected]:~$ docker -H 172.16.0.5:2375 infoContainere:0 Kører:0 Pause:0 Stoppet:0Billeder:0Rolle:primærStrategi:spredningNoder:1 swarm-agent-D50F2301100:100.100:100:100:100:1000 Manager:falsk Kernel Version:3.19.0-65-generic Operativsystem:linuxArkitektur:amd64CPU'er:2Total Memory:7.145GiB

Køre et Hello World Docker-billede

Hver af de virtuelle maskiner i en ACS Swarm er en Docker-vært, og en selvstændig Docker-container kan køres på enhver af Swarm VM'erne. Kør som et eksempel "hello-world" Docker-billedet på en master-VM.

[email protected]:~ $ docker kører hej verdensomspændende for at finde billede 'Hello-World:Seneste' Lokallatest:Træk fra bibliotek/Hello-World5B0F327BE733:PULL FULDTEGEST:SHA256:B2BA691D8AAC9E5AC364C0788E3D3823F977777771 world:nyesteHej fra Docker! Denne meddelelse viser, at din installation ser ud til at fungere korrekt. For at generere denne meddelelse tog Docker følgende trin:1. Docker-klienten kontaktede Docker-dæmonen. 2. Docker-dæmonen trak "hello-world"-billedet fra Docker Hub. 3. Docker-dæmonen oprettede en ny beholder fra det billede, som kører den eksekverbare, der producerer det output, du i øjeblikket læser. 4. Docker-dæmonen streamede det output til Docker-klienten, som sendte det til din terminal. For at prøve noget mere ambitiøst kan du køre en Ubuntu-container med:$ docker run -it ubuntu bashDel billeder, automatiser arbejdsgange og mere med en gratis Docker ID:https://cloud.docker.com/For flere eksempler og ideer, besøg:https://docs.docker.com/engine/userguide/[email protected]:~$

Docker-billedet hello-world kører på Swarm master VM og ikke på Swarm. Master VM'en er blot en af ​​VM'erne i Swarm. Docker Swarm lytter til endepunktet 172.16.0.5:2375. For at køre Docker-containere på Swarm skal Swarm-endepunktet angives, som vi vil diskutere i næste afsnit. Når en Docker-container køres på en Swarm, tildeler Swarm-mesteren en Swarm-agent til at køre Docker-containeren på.

Kørsel af et Nginx Docker-billede

hej-verdenen Docker-billede brugt i det foregående afsnit er et meget grundlæggende Docker-billede med ikke meget Dockerisering og udsender bare en besked. I dette afsnit skal vi køre en selvstændig container med Docker-billede nginx til en Nginx-server. Følgende kommando opretter en Docker-beholder kaldet hello-nginx og afslører port 80 på værten.

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

Outputtet fra dockerkørsel kommandoen er angivet:

[email protected]:~$ docker run --name hello-nginx -d -p 80:80 nginxUneable to find image 'nginx:latest' locallylatest:Trækker fra bibliotek/nginxbc95e04b23c0:Træk komplet110767c6efcfll:Pull complete50408 completeDigest:sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee 6e65a03465392072Status:Downloaded newer image for nginx:latestb3679edba090ff41482f3754b4d852d295985b501f6fa2a08b46c04bd0014c2e

Den foregående dockerkørsel kommandoen kører en Docker-container på Swarm master VM. dockerløbet kommandoen kan køres på Swarm ved at angive Swarm-slutpunktets IP og port som følger:

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

Angivelse af Docker-containere

List Docker-beholderne på en master-VM med docker-ps'en kommando. hello-nginx Docker-container bliver opført. En Swarm Manager-beholder, som ikke er brugeroprettet, men er en systembeholder, oprettes, når en Swarm oprettes.

Redaktørens note: Bemærk venligst, at mange af de følgende kodelister er for brede til at blive vist korrekt. Rul venligst kodefeltet til højre for at se hele fortegnelsen.
[email protected]:~$ docker psCONTAINER ID BILLEDEKOMMANDO OPRETTET STATUSPORTE NAVNEb3679edba090 nginx "nginx -g 'daemon..." 3 sekunder siden Op 2 sekunder 0.0.0.0:80->82-nfcfxp swarm:1.1.0 "/swarm manage --r..." 5 minutter siden Op 3 minutter 0.0.0.0:2375->2375/tcp containers_swarm_1

Docker-beholderne på Swarm-slutpunktet kan være opført som følger:

[email protected]:~$ docker -H 172.16.0.5:2375 ps -aCONTAINER ID BILLEDEKOMMANDO OPRETTET STATUSPORTE NAVNESddcbc335988f nginx "nginx -g 'daemon..." 1 030 seconds ago:36 seconds.0 80->80/tcp swarm-agent-D50F2361000001/hello-nginx

Docker-beholderen kører på en Swarm-agent som angivet af Docker-beholdernavnet swarm-agent-D50F2361000001/hello-nginx .

Adgang til Nginx Docker Container i en browser

Som diskuteret tidligere, når en Docker-beholder køres på Swarm ved hjælp af Swarm-slutpunktet, planlægger Swarm-mesteren beholderen på en af ​​Swarm-agenterne i Swarm. For at få adgang til Nginx-serveren, der kører i Docker-beholderen på Swarm-slutpunktet, skal Swarm-agentens offentlige IP-adresse bruges. Den Swarm vi har brugt har kun ét Swarm-middel. Swarm-agentens offentlige IP kan fås fra ressourcelisten, som vist i figur 1.


Figur 1: Swarm Agent Offentlig IP-adresse

Alternativt kan du klikke på Swarm agent Load balancer i Ressourcer , som vist i figur 2.


Figur 2: Swarm Agent Load Balancer

Få IP-adressen på siden med Swarm-agentdetaljer (se figur 3).


Figur 3: IP-adresse på Swarm Agent

IP-adressen kan også fås fra Swarm agent load balancer-detaljersiden, som vist i figur 4.


Figur 4: Swarm Agent Public IP på Load Balancer-siden

I en browser på en lokal maskine skal du navigere til Swarm-agentens offentlige IP-adresse. Nginx-serverens velkomstside bliver vist, som vist i figur 5.


Figur 5: Påkalder Nginx Server i en browser

Fjernelse af en Docker-container

For at fjerne en Docker-beholder skal du køre docker rm kommando. En kørende Docker-container kan ikke fjernes. Stop først Docker-beholderen hello-nginx kører på sværmen.

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

Efterfølgende kan den stoppede beholder fjernes med docker rm .

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

Initialisering af Docker Swarm Mode

Som diskuteret før, har Azure Container Service Swarm ikke Swarm-tilstanden aktiveret som standard. Swarm-tilstanden skal initialiseres med docker swarm init kommando.

[email protected]:~$ docker swarm init --advertise-addr 52.176.1.213Swarm initialiseret:nuværende node (ia4uj7431stu8y0j5h2yvdp27) er nu en manager.

For at tilføje en arbejder til denne sværm skal du køre følgende kommando:

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

For at tilføje en manager til denne sværm, skal du køre 'docker swarm join-token manager' og følge instruktionerne.

Liste Swarm mode noder med docker node ls kommando. Swarm manager-knuden bliver vist.

[email protected]:~$ docker node lsID HOSTNAVN STATUS TILGÆNGELIGHED MANAGER STATUSia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 Klar Aktiv leder

Oprettelse af en Docker-tjeneste

Efter at have initialiseret Docker Swarm-tilstanden, opret en Docker-tjeneste med docker-tjenesten create kommando. Som et eksempel kan du oprette en Docker-tjeneste bestående af to replikaer ved hjælp af Docker-billede alpine og ping docker.com.

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

Som et andet eksempel kan du oprette en Docker-tjeneste med Docker-billedet tutum/hello-world og eksponer tjenesten på værten på port 8080.

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

Angivelse af Docker Services

Liste over Docker-tjenesterne med docker-tjenesten ls kommando. De to tjenester, der er oprettet i det foregående afsnit, vises.

[email protected]:~$ docker service lsID NAVN MODE REPLICAS IMAGE PORTS3e38c1595cdd hello-world replikeret 2/2 tutum/hello-world:seneste *:8080->80/tcptye 2ywqiworld replikere/tcptg23ywqiworld alpine:nyeste

Angivelse af Docker-tjenesteopgaver

Liste over Docker-tjenesteopgaverne for helloworld tjeneste baseret på Docker-billedet alpine .

[email protected]:~$ docker service ps helloworldID NAVN BILLEDE NODE ØNSKEDE STAT AKTUELLE TILSTAND FEJL PORTS0mal82mskbge helloworld.1 alpine:nyeste swarm-master-D50F2361-0 Løb Løb 33 sekunder helloqliqz2000_alpinest_world. master-D50F2361-0 Kører Kører for 32 sekunder siden

Liste over Docker-tjenesteopgaverne for hello-world tjeneste baseret på tutum/hello-world Docker-billede.

[email protected]:~$ docker service ps hello-worldID NAVN BILLEDE NODE ØNSKEDE STAT AKTUELLE TILSTAND FEJL PORTSyok48ja4o835 hello-world.1 tutum/hello-world:nyeste swarm-master-D50F2361-0 sek. Kører glwdx 038 sekunder hello-world.2 tutum/hello-world:nyeste swarm-master-D50F2361-0 Løb Løb for 38 sekunder siden

Angivelse af Docker-containere til Docker-tjenesten

Docker-beholderne til en Docker-tjeneste på en Docker-vært i Swarm kan være opført med docker ps kommando.

[email protected]:~$ docker psCONTAINER ID BILLEDEKOMMANDO OPRETTET STATUSPORTE NAVNEb6b069102300 tutum/hello-world:latest "/bin/sh -c 'php-f..." 6 minutter siden Op 6 minutter 80/ tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum/hello-world:nyeste "/bin/sh -c 'php-f..." for 6 minutter siden Op 6 minutter 80/tcp hello-world.1.yok88c4gbhn:algb48c4g473d53d3733d53733d537337000000000000000000000 pingdocker.com" 7 minutter siden Op 7 minutter helloworld.2.iqz0bqkldxs2sg8ny50je7e7y92dab9f7ae97 alpine:latest "pingdocker.com" 7 minutter siden Op 7 minutter helloworld.1.0mal82mskbgecbcrwh3op18n 

Docker-containere til hello-world og helloworld tjenester bliver opført.

Udforskning af logfiler genereret af en Docker Service Container

Logfilerne genereret, hvis nogen, i en Docker-container til en Docker-tjeneste kan være opført med docker-logfilerne kommando. Som et eksempel kan du hente container-id'et for en alpine billedbaseret tjeneste og liste logfilerne:

[email protected]:~$ docker-logfiler db4827da350bPING docker.com (34.201.187.190):56 databytes

Som outputtet indikerer, bliver docker.com-domænet pinget, og 56 bytes data udveksles.

Konklusion

I denne artikel diskuterede vi brugen af ​​Docker i en Docker Swarm-klynge på Azure Container Service. Vi brugte selvstændige Docker-containere og Docker-tjenester på Swarm. En Swarm-klynge på ACS afslører et Swarm-slutpunkt for at køre en selvstændig Docker-container. Når Docker-containere køres på Swarm-slutpunktet, kører Swarm-standalone Docker-containere på Swarm-agent(er). Swarm-tilstanden er ikke aktiveret som standard og skal initialiseres på en Swarm master VM.


  1. Microsoft annoncerer SQL Server 2012 R2 og SQL Server 2012 R3!

  2. Overdreven MySQL-aktivitet

  3. SQLite-transaktion

  4. Vis fuld SQL-forespørgsel i Vis procesliste for MySQL