Database
 sql >> база данни >  >> RDS >> Database

Използване на Docker в Azure Container Service с Swarm Cluster

В първата статия, „Създаване на Docker Swarm клъстер в Azure Container Service“, обсъдихме създаването на Docker Swarm клъстер в Azure Container Service (ACS). Всяка виртуална машина (главна или агент) има работещ Docker, когато роят е създаден. В тази статия за продължение ще обсъдим използването на Docker в рояка, създаден в услугата за контейнери Azure. Ще обсъдим използването както на самостоятелен Docker, така и на услуга в режим Docker Swarm. Тази статия има следните раздели:

  • Настройка на средата
  • Изброяване на информация за Docker
  • Изпълнение на изображение на Hello World Docker
  • Изпълнение на изображение на Nginx Docker
  • Изброяване на Docker контейнери
  • Достъп до Nginx Docker контейнера в браузър
  • Премахване на Docker контейнер
  • Инициализиране на режима на Docker Swarm
  • Създаване на услуга Docker
  • Изброяване на Docker услуги
  • Изброяване на задачи на услугата Docker
  • Изброяване на Docker контейнери за Docker Service
  • Проучване на регистрационни файлове, генерирани от Docker Service Container
  • Заключение

Настройка на средата

Използвайте същата среда като в първата статия „Създаване на Docker Swarm клъстер в услугата за контейнери Azure.“ Създайте клъстер Swarm на ACS, както е обсъдено в статията. В тази статия ще използваме клъстера Swarm, състоящ се от три главни възела и един възел на агент, за да стартираме самостоятелен Docker контейнер и услуга в режим Docker Swarm.

Списък с информация за Docker

Стартирайте Cloud Shell, както е обсъдено в статията „Създаване на Docker Swarm Cluster в Azure Container Service.“ Свържете се с главна VM на Swarm, като използвате SSH RSA частен ключ, потребителско име и публичен IP адрес на главната, както беше обсъдено също в по-ранната статия. SSH командата за свързване към главната VM е както следва; частният ключ на SSH RSA, потребителското име и публичният IP адрес ще бъдат различни за различните потребители.

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

Установява се връзка и се показва команден ред за главната VM.

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected] Добре дошли в Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-generic x86_64) * Документация:https://help.ubuntu.com/ Информация за системата към вторник, 10 октомври 22:40:17 UTC 2017 Натоварване на системата:0,27 Процеси:131 Използване на /:4,2% от 28,80 GB Потребители, влезли в системата:0 Използване на паметта :2% IP адрес за eth0:172.16.0.5 Използване на размяна:0% IP адрес за docker0:172.17.0.1 Графично рисувайте тези данни и управлявайте тази система на:https://landscape.canonical.com/ Получете поддръжка в облак с Ubuntu Advantage Cloud Гост:http://www.ubuntu.com/business/services/cloud Налична е нова версия „16.04.3 LTS“. Стартирайте 'do-release-upgrade', за да надстроите до него. Последно влизане:вт, 10 октомври 22:40:17 2017 г. от 40.78.30.37

Три главни възела бяха конфигурирани в Swarm, предоставен в статията „Създаване на Docker Swarm клъстер в Azure Container Service“. Броят на главните VM може да бъде 1, 3 или 5. Когато се изпълняват множество главни VM, SSH командата за свързване към всяка от главните VM е една и съща с изключение на SSH порта, който е 2200 за 1 главен, 2201 за 2 главен, 2202 за 3 главен, 2203 за 4 главен и 2204 за 5 главен. При три главни VM, използваните SSH портове са 2200, 2201 и 2202. За да се свържете с 2 главни, SSH командата е както следва:

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

И SSH командата за свързване към главния 2 е както следва:

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

Демонът Docker работи на 172.16.0.5:2375 . За да покажете информация за цялата система, стартирайте docker info команда. Изходът (частичен) от командата е посочен:

[email protected]:~$ docker -H 172.16.0.5:2375 infoContainers:0 Работи:0 На пауза:0 Спрян:0Изображения:0Роля:primaryStrategy:spreadNodes:1 swarm-agent-D50F2361005:1005 Мениджър:false Версия на ядрото:3.19.0-65-generic Операционна система:linux Архитектура:amd64CPUs:2 Обща памет:7,145GiB

Изпълнение на изображение на Hello World Docker

Всяка от виртуалните машини в ACS Swarm е хост на Docker и самостоятелен Docker контейнер може да се изпълнява на всяка от Swarm VM. Като пример стартирайте изображението на Docker „hello-world“ на главна 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:latestHello от Docker! Това съобщение показва, че вашата инсталация изглежда работи правилно. За да генерира това съобщение, Docker предприе следните стъпки:1. Клиентът на Docker се свърза с демона на Docker. 2. Демонът на Docker изтегли изображението "hello-world" от Docker Hub. 3. Демонът на Docker създаде нов контейнер от това изображение, което изпълнява изпълнимия файл, който произвежда изхода, който четете в момента. 4. Демонът на Docker предава този изход на клиента на Docker, който го изпраща до вашия терминал. За да опитате нещо по-амбициозно, можете да стартирате контейнер на Ubuntu с:$ docker run -it ubuntu bash Споделяне на изображения, автоматизиране на работните процеси и други с безплатен Docker ID:https://cloud.docker.com/За повече примери и идеи посетете:https://docs.docker.com/engine/userguide/[email protected]:~$

Изображението на Docker hello-world работи на Swarm master VM, а не на Swarm. Главната VM е само една от VM в рояка. Docker Swarm слуша крайната точка 172.16.0.5:2375. За да стартирате Docker контейнери на Swarm, крайната точка на Swarm трябва да бъде предоставена, както ще обсъдим в следващия раздел. Когато Docker контейнер се изпълнява на Swarm, Swarm главният присвоява агент на Swarm, който да изпълнява Docker контейнера.

Изпълнение на изображение на Nginx Docker

Здравей, свят Изображението на Docker, използвано в предходния раздел, е много основно изображение на Docker с не много докеризация и просто извежда съобщение. В този раздел ще стартираме самостоятелен контейнер с изображение на Docker nginx за Nginx сървър. Следната команда създава Docker контейнер, наречен hello-nginx и разкрива порт 80 на хоста.

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

Резултатът от docker run командата е посочена:

[email protected]:~$ docker run --name hello-nginx -d -p 80:80 nginxНевъзможност за намиране на изображение 'nginx:latest' locallylatest:Изтегляне от библиотека/nginxbc95e04b23c0:Изтегляне завършено110767c6fcdll:Pull complete:fcfd87 completeDigest:sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee 6e65a03465392072Status:Downloaded newer image for nginx:latestb3679edba090ff41482f3754b4d852d295985b501f6fa2a08b46c04bd0014c2e

Предходното docker изпълнение командата стартира Docker контейнер на Swarm master VM. Docker run командата може да се изпълнява на Swarm, като се предостави IP и порт на крайната точка на Swarm, както следва:

[email protected]:~$ docker -H 172.16.0.5:2375 изпълнете --name hello-nginx -d -p 80:80 nginxddcbc335988f7b5dba762b436bfde4c22d01140bac8d37140bfde4c22d011408df 

Изброяване на Docker контейнери

Избройте Docker контейнерите на главна VM с docker ps команда. hello-nginx Docker контейнерът се показва в списъка. Контейнер на Swarm Manager, който не е създаден от потребителя, а е системен контейнер, се създава, когато се създаде Swarm.

Бележка на редактора: Моля, имайте предвид, че много от следните списъци с кодове са твърде широки, за да се покажат правилно. Моля, превъртете полето с код вдясно, за да видите целия списък.
[email protected]:~$ docker psCONTAINER ID IMAGE COMMANDE СЪЗДАДЕНО СТАТУС ИМЕНА НА ПОРТОВЕТЕ NAMESb3679edba090 nginx "nginx -g 'daemon..." преди 3 секунди Нагоре 2 секунди 0.0.0.0:80->phel42->febbn swarm:1.1.0 "/swarm manage --r..." преди 5 минути Нагоре 3 минути 0.0.0.0:2375->2375/tcp containers_swarm_1

Docker контейнерите в крайната точка на Swarm могат да бъдат изброени по следния начин:

[email protected]:~$ docker -H 172.16.0.5:2375 ps -aCONTAINER ID IMAGE COMMANDE СЪЗДАДЕНО СТАТУС ПРИОРОТОВЕ ИМЕНАSddcbc335988f nginx "nginx -g 'daemon..." 336 секунди. Нагоре. 0.0 секунди 80->80/tcp swarm-agent-D50F2361000001/hello-nginx

Контейнерът Docker работи на Swarm агент, както е посочено от името на контейнера Docker swarm-agent-D50F2361000001/hello-nginx .

Достъп до Nginx Docker контейнера в браузър

Както беше обсъдено по-рано, когато контейнер на Docker се изпълнява на Swarm, използвайки крайната точка на Swarm, Swarm master планира контейнера на един от агентите на Swarm в Swarm. За достъп до сървъра на Nginx, работещ в Docker контейнер на крайната точка на Swarm, трябва да се използва публичният IP адрес на агента на Swarm. Роякът, който използвахме, има само един Swarm агент. Публичният IP на агента на роя може да бъде получен от списъка с ресурси, както е показано на фигура 1.


Фигура 1: Публичен IP адрес на Swarm Agent

Като алтернатива щракнете върху балансира на натоварването на агента на рояка в Ресурси , както е показано на фигура 2.


Фигура 2: Балансиране на натоварването на рояков агент

В страницата с подробности за агента на роя получете IP адреса (вижте фигура 3).


Фигура 3: IP адрес на Swarm Agent

IP адресът също може да бъде получен от страницата с подробности за балансиране на натоварването на агента на Swarm, както е показано на Фигура 4.


Фигура 4: Публичен IP адрес на агента на роя на страницата на Load Balancer

В браузър на локална машина отидете до публичния IP адрес на агента на Swarm. Показва се приветствената страница на Nginx сървъра, както е показано на Фигура 5.


Фигура 5: Извикване на Nginx сървър в браузър

Премахване на Docker контейнер

За да премахнете Docker контейнер, стартирайте docker rm команда. Работещ Docker контейнер не може да бъде премахнат. Първо, спрете контейнера Docker hello-nginx работи върху рояка.

[email protected]:~$ docker -H 172.16.0.5:2375 стоп hello-nginxhello-nginx

Впоследствие спреният контейнер може да бъде премахнат с docker rm .

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

Инициализиране на режима на Docker Swarm

Както беше обсъдено по-горе, роякът на услугата за контейнери Azure няма активиран по подразбиране режим на Swarm. Режимът Swarm трябва да бъде инициализиран с docker swarm init команда.

[email protected]:~$ docker swarm init --advertise-addr 52.176.1.213Swarm инициализиран:текущият възел (ia4uj7431stu8y0j5h2yvdp27) вече е мениджър.

За да добавите работник към този рояк, изпълнете следната команда:

docker swarm join --tokenSWMTKN-1-5ksj7uqccgv1vnnmie09qmt191ldpupof4ihg4vhm083c20xsh -6uyq5653uo62e521bcoatzyyz52.176.1.273:pre:

За да добавите мениджър към този рояк, стартирайте „docker swarm join-token manager“ и следвайте инструкциите.

Избройте възлите в режим Swarm с docker възел ls команда. Възелът на мениджъра на роя се показва в списъка.

[email protected]:~$ docker node lsID ИМЕ НА ХОСТ СТАТУС НАЛИЧНОСТ МЕНИДЖЪР СТАТУТia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 Готов активен лидер

Създаване на услуга Docker

След като инициализирате режима на Docker Swarm, създайте услуга Docker с docker service create команда. Като пример създайте услуга Docker, състояща се от две реплики, като използвате Docker image alpine и ping docker.com.

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

Като друг пример създайте услуга на Docker с изображението на Docker tutum/hello-world и изложете услугата на хоста на порт 8080.

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

Изброяване на Docker услуги

Избройте услугите на Docker с docker услугата ls команда. Двете услуги, създадени в предходния раздел, ще бъдат изброени.

[email protected]:~$ docker service lsID ИМЕ РЕЖИМ РЕПЛИКИ ИЗОБРАЖЕНИЕ PORTS3e38c1595cdd hello-world репликиран 2/2 tutum/hello-world:latest *:8080->g10/wqiyept/tqiyept алпийски:най-ново

Изброяване на задачи на услугата Docker

Избройте задачите на услугата Docker за helloworld услуга, базирана на изображението на Docker alpine .

[email protected]:~$ docker service ps helloworldID ИМЕ ИЗОБРАЖЕНИЕ ВЪЗЕЛ ЖЕЛАНО СЪСТОЯНИЕ ГРЕШКА ТЕКУЩО СЪСТОЯНИЕ PORTS0mal82mskbge helloworld.1 alpine:най-нов swarm-master-D50F2361-0 Изпълнение Изпълнява се преди 33 сек.xla. master-D50F2361-0 Изпълнение Работи преди 32 секунди

Избройте задачите на услугата Docker за hello-world услуга, базирана на tutum/hello-world Изображение на Docker.

[email protected]:~$ docker service ps hello-worldID ИМЕ IMAGE NODE ЖЕЛАНО СЪСТОЯНИЕ ГРЕШКА ТЕКУЩО СЪСТОЯНИЕ PORTSyok48ja4o835 hello-world.1 tutum/hello-world:най-нов swarm-master-D50F2361-38d Running seconds hello-world.2 tutum/hello-world:latest swarm-master-D50F2361-0 Тичане Тичане преди 38 секунди

Изброяване на Docker контейнери за Docker Service

Docker контейнерите за услуга Docker на хост Docker в Swarm може да бъдат изброени с docker ps команда.

[email protected]:~$ docker psCONTAINER ID IMAGE COMMANDE СЪЗДАДЕНО СТАТУС ИМЕНА НА ПОРТОВЕТЕ Sb6b069102300 tutum/hello-world:latest "/bin/sh -c 'php-f..." преди 6 минути Нагоре 6 минути 80/ tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum/hello-world:най-нов "/bin/sh -c 'php-f..." преди 6 минути Нагоре 6 минути 80/tcp hello-world.1.yok38ncjc778c38c38c78c78c8c8c7c78c7c7c78c7c78c7c7c7c7c7cdc78c7cdc7 pingdocker.com" преди 7 минути Нагоре 7 минути helloworld.2.iqz0bqkldxs2sg8ny50je7e7y92dab9f7ae97 alpine:най-нов "pingdocker.com" преди 7 минути Нагоре 7 минути helloworld.1.0mal82mskbgecbcwrrh1pre 

Docker контейнери за hello-world и helloworld услугите ще бъдат изброени.

Проучване на регистрационни файлове, генерирани от Docker Service Container

Регистрите, генерирани, ако има такива, в контейнер на Docker за услуга на Docker, могат да бъдат изброени с регистрационните файлове на docker команда. Като пример вземете идентификатора на контейнера за услуга, базирана на алпийски изображения, и избройте регистрационните файлове:

[email protected]:~$ docker регистрира db4827da350bPING docker.com (34.201.187.190):56 байта данни

Както показва изходът, домейнът docker.com получава пинг и се обменят 56 байта данни.

Заключение

В тази статия обсъдихме използването на Docker в клъстер на Docker Swarm в Azure Container Service. Използвахме самостоятелни Docker контейнери и Docker услуги на Swarm. Swarm клъстер на ACS разкрива крайна точка на Swarm за изпълнение на самостоятелен Docker контейнер. Когато Docker контейнерите се изпълняват на крайната точка на Swarm, Swarm изпълнява самостоятелни Docker контейнери на Swarm агент/и. Режимът Swarm не е активиран по подразбиране и трябва да бъде инициализиран на Swarm master VM.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Улавяне на предупреждения за план за изпълнение с помощта на разширени събития

  2. Колба по пример – Настройка на Postgres, SQLAlchemy и Alembic

  3. Качество на данните и размито търсене

  4. Въведение в SQL

  5. PASS Summit 2013 :Успех в Шарлът