sql >> Database >  >> RDS >> Database

Docker gebruiken op Azure Container Service met Swarm Cluster

In het eerste artikel, 'Een Docker Swarm-cluster maken op Azure Container Service', bespraken we het maken van een Docker Swarm-cluster op Azure Container Service (ACS). Op elke virtuele machine (master of agent) draait Docker wanneer de Swarm wordt gemaakt. In dit vervolgartikel bespreken we het gebruik van Docker op de Swarm die is gemaakt op de Azure Container Service. We bespreken het gebruik van zowel stand-alone Docker als een Docker Swarm-modusservice. Dit artikel heeft de volgende secties:

  • De omgeving instellen
  • Locker-info weergeven
  • Een Hello World Docker-afbeelding uitvoeren
  • Een Nginx Docker-afbeelding uitvoeren
  • Locker-containers weergeven
  • Toegang tot de Nginx Docker-container in een browser
  • Een Docker-container verwijderen
  • De Docker Swarm-modus initialiseren
  • Een Docker-service maken
  • Docker-services vermelden
  • Locker-servicetaken weergeven
  • Locker-containers voor Docker-service weergeven
  • Logboeken verkennen die zijn gegenereerd door een Docker-servicecontainer
  • Conclusie

De omgeving instellen

Gebruik dezelfde omgeving als in het eerste artikel 'Een Docker Swarm Cluster maken op Azure Container Service'. Maak een Swarm-cluster op ACS, zoals besproken in het artikel. In dit artikel gebruiken we het Swarm-cluster dat bestaat uit drie hoofdknooppunten en één agentknooppunt om een ​​zelfstandige Docker-container en een Docker Swarm-modusservice uit te voeren.

Locker-info weergeven

Start Cloud Shell zoals besproken in het artikel "Een Docker Swarm Cluster maken op Azure Container Service". Maak verbinding met een Swarm-master-VM met behulp van een SSH RSA-privésleutel, gebruikersnaam en openbaar IP-adres van de master, zoals ook in het eerdere artikel is besproken. De SSH-opdracht om verbinding te maken met de master-VM is als volgt; de SSH RSA-privésleutel, gebruikersnaam en openbaar IP-adres zouden voor verschillende gebruikers anders zijn.

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

Er wordt een verbinding tot stand gebracht en een opdrachtprompt voor de master-VM wordt weergegeven.

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected] bij Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-generiek x86_64) * Documentatie:https://help.ubuntu.com/ Systeeminformatie vanaf di 10 okt 22:40:17 UTC 2017 Systeembelasting:0,27 Processen:131 Gebruik van /:4,2% van 28,80 GB Gebruikers ingelogd:0 Geheugengebruik :2% IP-adres voor eth0:172.16.0.5 Wisselgebruik:0% IP-adres voor docker0:172.17.0.1 Maak een grafiek van deze gegevens en beheer dit systeem op:https://landscape.canonical.com/ Krijg cloudondersteuning met Ubuntu Advantage Cloud Gast:http://www.ubuntu.com/business/services/cloud Nieuwe release '16.04.3 LTS' beschikbaar. Voer 'do-release-upgrade' uit om ernaar te upgraden.Laatste login:di 10 okt 22:40:17 2017 van 40.78.30.37

Er zijn drie hoofdknooppunten geconfigureerd in de zwerm die is ingericht in het artikel 'Een Docker-zwermcluster maken op Azure Container Service'. Het aantal master-VM's kan 1, 3 of 5 zijn. Bij het uitvoeren van meerdere master-VM's is de SSH-opdracht om verbinding te maken met elk van de master-VM's hetzelfde, behalve voor de SSH-poort, die 2200 is voor de 1 master, 2201 voor de 2-master, 2202 voor de 3-master, 2203 voor de 4-master en 2204 voor de 5-master. Met drie master-VM's zijn de gebruikte SSH-poorten 2200, 2201 en 2202. Om verbinding te maken met een 2-master, is de SSH-opdracht als volgt:

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

En het SSH-commando om verbinding te maken met de 2-master is als volgt:

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

De Docker-daemon draait op 172.16.0.5:2375 . Voer de docker-info . uit om systeembrede informatie weer te geven opdracht. Uitvoer (gedeeltelijk) van de opdracht wordt weergegeven:

[email protected]:~$ docker -H 172.16.0.5:2375 infoContainers:0 Actief:0 Gepauzeerd:0 Gestopt:0Afbeeldingen:0Rol:primaryStrategie:spreadNodes:1 swarm-agent-D50F2361000001:10.0.0.5:2375Is Manager:false Kernelversie:3.19.0-65-genericBesturingssysteem:linuxArchitecture:amd64CPU's:2Totaal geheugen:7.145GiB

Een Hello World Docker-afbeelding uitvoeren

Elk van de virtuele machines in een ACS Swarm is een Docker-host en een zelfstandige Docker-container kan op elk van de Swarm-VM's worden uitgevoerd. Voer bijvoorbeeld de "hello-world" Docker-image uit op een master-VM.

[email protected]:~$ docker run hello-worldKan afbeelding 'hello-world:latest' lokaal niet vinden laatste:Pulling from library/hello-world5b0f327be733:Pull completeDigest:sha256:b2ba691d8aac9e5ac3644c0788e3d3876f9edc2f3876f9edc world:latestHallo van Docker! Dit bericht laat zien dat uw installatie correct lijkt te werken. Om dit bericht te genereren, heeft Docker de volgende stappen ondernomen:1. De Docker-client nam contact op met de Docker-daemon. 2. De Docker-daemon haalde de "hello-world"-afbeelding uit de Docker Hub. 3. De Docker-daemon heeft een nieuwe container gemaakt van die afbeelding die het uitvoerbare bestand uitvoert dat de uitvoer produceert die u momenteel aan het lezen bent. 4. De Docker-daemon streamde die uitvoer naar de Docker-client, die het naar uw terminal stuurde. Om iets ambitieuzers te proberen, kunt u een Ubuntu-container uitvoeren met:$ docker run -it ubuntu bash Deel afbeeldingen, automatiseer workflows en meer met een gratis Docker-ID:https://cloud.docker.com/Ga voor meer voorbeelden en ideeën naar:https://docs.docker.com/engine/userguide/[email protected]:~$

De Docker-afbeelding hallo-wereld draait op de Swarm-master-VM en niet op de Swarm. De master-VM is slechts een van de VM's in de Swarm. De Docker Swarm luistert naar het eindpunt 172.16.0.5:2375. Om Docker-containers op de Swarm te laten draaien, moet het Swarm-eindpunt worden opgegeven, zoals we in de volgende sectie zullen bespreken. Wanneer een Docker-container op een Swarm wordt uitgevoerd, wijst de Swarm-master een Swarm-agent toe om de Docker-container op uit te voeren.

Een Nginx Docker-afbeelding uitvoeren

De hallo-wereld Docker-afbeelding die in de voorgaande sectie is gebruikt, is een zeer eenvoudige Docker-afbeelding met niet veel Dockerization en geeft alleen een bericht weer. In deze sectie zullen we een zelfstandige container uitvoeren met Docker-afbeelding nginx voor een Nginx-server. De volgende opdracht maakt een Docker-container met de naam hello-nginx en stelt poort 80 op de host bloot.

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

De uitvoer van de docker-run commando wordt weergegeven:

[email protected]:~$ docker run --name hello-nginx -d -p 80:80 nginxKan afbeelding 'nginx:latest' lokaal niet vinden nieuwste:Pulling from library/nginxbc95e04b23c0:Pull complete110767c6efff:Pull completef081e0c4df75:Pull completeDigest:sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee 6e65a03465392072Status:Nieuwere afbeelding gedownload voor nginx:latestb3679edba090ff41482f3754b4d852d65985a50081predc> 

De voorgaande docker-run opdracht voert een Docker-container uit op de Swarm-master-VM. De docker-run commando kan op de Swarm worden uitgevoerd door het Swarm-eindpunt IP en de poort als volgt op te geven:

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

Locker-containers weergeven

Maak een lijst van de Docker-containers op een hoofd-VM met de docker ps opdracht. De hallo-nginx Docker-container wordt vermeld. Een Swarm Manager-container, die niet door de gebruiker is gemaakt, maar een systeemcontainer is, wordt gemaakt wanneer een Swarm wordt gemaakt.

Noot van de redactie: Houd er rekening mee dat veel van de volgende codelijsten te breed zijn om correct weer te geven. Scroll a.u.b. door het codevak naar rechts om de volledige lijst te zien.
[email protected]:~$ docker psCONTAINER ID AFBEELDING COMMANDO GEMAAKT STATUS POORTEN NAMENb3679edba090 nginx "nginx -g 'daemon..." 3 seconden geleden Omhoog 2 seconden 0.0.0.0:80->80/tcp hello-nginxf82ebb6efa swarm:1.1.0 "/swarm manage --r..." 5 minuten geleden Omhoog 3 minuten 0.0.0.0:2375->2375/tcp containers_swarm_1

De Docker-containers op het Swarm-eindpunt kunnen als volgt worden weergegeven:

[email protected]:~$ docker -H 172.16.0.5:2375 ps -aCONTAINER ID IMAGE COMMAND GEMAAKT STATUS POORTEN NAMENddcbc335988f nginx "nginx -g 'daemon..." 36 seconden geleden Up 35 seconden 10.0.0.5:80->80/tcp swarm-agent-D50F2361000001/hello-nginx

De Docker-container draait op een Swarm-agent zoals aangegeven door de Docker-containernaam swarm-agent-D50F2361000001/hello-nginx .

Toegang tot de Nginx Docker-container in een browser

Zoals eerder besproken, wanneer een Docker-container op de Swarm wordt uitgevoerd met behulp van het Swarm-eindpunt, plant de Swarm-master de container op een van de Swarm-agenten in de Swarm. Om toegang te krijgen tot de Nginx-server die wordt uitgevoerd in Docker-container op het Swarm-eindpunt, moet het openbare IP-adres van de Swarm-agent worden gebruikt. De zwerm die we hebben gebruikt heeft maar één zwermagent. Het openbare IP-adres van de Swarm-agent kan worden verkregen via de bronnenlijst, zoals weergegeven in afbeelding 1.


Figuur 1: Openbaar IP-adres van zwermagent

U kunt ook op de Swarm-agent Load balancer klikken in de Bronnen , zoals weergegeven in afbeelding 2.


Figuur 2: Swarm Agent Load Balancer

Verkrijg op de pagina Swarm-agentdetails het IP-adres (zie afbeelding 3).


Figuur 3: IP-adres van zwermagent

Het IP-adres kan ook worden verkregen via de details van de load balancer-pagina van de Swarm-agent, zoals weergegeven in afbeelding 4.


Figuur 4: Swarm Agent Public IP op de Load Balancer-pagina

Navigeer in een browser op een lokale computer naar het openbare IP-adres van de Swarm-agent. De welkomstpagina van de Nginx-server wordt weergegeven, zoals weergegeven in Afbeelding 5.


Figuur 5: Nginx Server aanroepen in een browser

Een Docker-container verwijderen

Om een ​​Docker-container te verwijderen, voert u de docker rm . uit opdracht. Een actieve Docker-container kan niet worden verwijderd. Stop eerst de Docker-container hello-nginx rennend op de zwerm.

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

Vervolgens kan de gestopte container worden verwijderd met docker rm .

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

De Docker Swarm-modus initialiseren

Zoals eerder besproken, heeft de Azure Container Service Swarm de Swarm-modus niet standaard ingeschakeld. De Swarm-modus moet worden geïnitialiseerd met de docker swarm init commando.

[email protected]:~$ docker swarm init --advertise-addr 52.176.1.213Swarm geïnitialiseerd:huidige node (ia4uj7431stu8y0j5h2yvdp27) is nu een beheerder.

Voer de volgende opdracht uit om een ​​arbeider aan deze zwerm toe te voegen:

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

Om een ​​manager aan deze zwerm toe te voegen, voer je 'docker swarm join-token manager' uit en volg je de instructies.

Maak een lijst van de knooppunten in de zwermmodus met het docker-knooppunt ls opdracht. Het knooppunt van de zwermmanager wordt weergegeven.

[email protected]:~$ docker node lsID HOSTNAME STATUS BESCHIKBAARHEID MANAGER STATUSia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 Klaar actieve leider

Een Docker-service maken

Nadat u de Docker Swarm-modus hebt geïnitialiseerd, maakt u een Docker-service met de docker-service create opdracht. Maak bijvoorbeeld een Docker-service die bestaat uit twee replica's met behulp van Docker-image alpine en ping docker.com.

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

Maak als ander voorbeeld een Docker-service met de Docker-afbeelding tutum/hello-world en stel de service bloot op de host op poort 8080.

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

Vermelding van Docker-services

Maak een lijst van de Docker-services met de docker-service ls opdracht. De twee services die in de vorige sectie zijn gemaakt, worden weergegeven.

[email protected]:~$ docker-service lsID NAME MODE REPLICAS IMAGE PORTS3e38c1595cdd hello-world gerepliceerd 2/2 tutum/hello-world:latest *:8080->80/tcptg1ywqiyei3/2j helloworld gerepliceerd alpine:nieuwste

Locker-servicetaken weergeven

Maak een lijst van de Docker-servicetaken voor de helloworld service gebaseerd op de Docker-afbeelding alpine .

[email protected]:~$ docker-service ps helloworldID NAAM AFBEELDING NODE GEWENSTE STAAT HUIDIGE STAAT FOUT PORTS0mal82mskbge helloworld.1 alpine:latest swarm-master-D50F2361-0 Running Running 33 seconden agoiqz0bqkldxs2 helloworld. master-D50F2361-0 Running Running 32 seconden geleden

Maak een lijst van de Docker-servicetaken voor de hello-world service gebaseerd op de tutum/hello-world Docker-afbeelding.

[email protected]:~$ docker-service ps hello-worldID NAAM AFBEELDING NODE GEWENSTE STAAT HUIDIGE STAAT FOUT PORTSyok48ja4o835 hello-world.1 tutum/hello-world:latest swarm-master-D50F2361-0 Draaiend 38 seconden agox5tv Wordt uitgevoerd hello-world.2 tutum/hello-world:latest swarm-master-D50F2361-0 Running Running 38 seconden geleden

Locker-containers voor Docker-service weergeven

De Docker-containers voor een Docker-service op een Docker-host in de Swarm kunnen worden vermeld met de docker ps commando.

[email protected]:~$ docker psCONTAINER ID AFBEELDING COMMANDO GEMAAKT STATUS POORTEN NAMENb6b069102300 tutum/hello-world:latest "/bin/sh -c 'php-f..." 6 minuten geleden Up 6 minuten 80/ tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum/hello-world:latest "/bin/sh -c 'php-f..." 6 minuten geleden Omhoog 6 minuten 80/tcp hello-world.1.yok48ja4o835nc7cog7dbh48:"b pingdocker.com" 7 minuten geleden Omhoog 7 minuten helloworld.2.iqz0bqkldxs2sg8ny50je7e7y92dab9f7ae97 alpine:laatste "pingdocker.com" 7 minuten geleden Omhoog 7 minuten helloworld.1.0mal82mskbgecbcwh3op18nr

Dockercontainers voor de hello-world en hallowereld services worden vermeld.

Logboeken verkennen die zijn gegenereerd door een Docker-servicecontainer

De logboeken die, indien aanwezig, in een Docker-container voor een Docker-service worden gegenereerd, kunnen worden vermeld bij de docker-logboeken opdracht. Verkrijg bijvoorbeeld de container-ID voor een op alpine image gebaseerde service en vermeld de logbestanden:

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

Zoals de uitvoer aangeeft, wordt het domein docker.com gepingd en worden 56 bytes aan gegevens uitgewisseld.

Conclusie

In dit artikel hebben we het gebruik van Docker in een Docker Swarm-cluster op Azure Container Service besproken. We gebruikten stand-alone Docker-containers en Docker-services op de Swarm. Een Swarm-cluster op ACS stelt een Swarm-eindpunt bloot om een ​​zelfstandige Docker-container uit te voeren. Wanneer Docker-containers worden uitgevoerd op het Swarm-eindpunt, voert de Swarm zelfstandige Docker-containers uit op Swarm-agent(en). De Swarm-modus is standaard niet ingeschakeld en moet worden geïnitialiseerd op een Swarm-master-VM.


  1. Waarom hebben sommige commando's in psql geen effect?

  2. SQL INSERT INTO… SELECT Voorbeelden

  3. Een SaaS-abonnementsgegevensmodel

  4. Retourneer het basisgegevenstype van een SQL_Variantwaarde in SQL Server