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.
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.0mal82mskbgecbcrwh3op18nDocker-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 databytesSom 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.