Azure Container Service позволяет использовать контейнеры в Azure.
В примере ниже – запустим Docker Swarm мастер и три агента, после чего с помощью Docker Compose – запустим приложение из приватного репозитория в Docker Hub.
Без особых деталей, больше информации тут>>> и тут>>>.
Содержание
Деплой ACS Swarm через ARM
Логинимся в Azure:
$ azure login
Выбираем подписку:
$ azure account list
$ azure account set 3a3db38d-***-***-***-24d66ae03e38
Переключаемся в режим Azure Resource Manager:
$ azure config mode arm
Создаём группу ресурсов:
$ azure group create jm-acs-1 -l westeurope
Деплоим swarm-кластер из шаблона 101-acs-swarm:
$ azure group deployment create jm-acs-1 jm-acs-1-init --template-uri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/101-acs-swarm/azuredeploy.json info: Executing command group deployment create info: Supply values for the following parameters dnsNamePrefix: jm-app-1 sshRSAPublicKey: ssh-rsa AAAA*** + Initializing template configurations and parameters + Creating a deployment info: Created template deployment "jm-acs-1-init" + Waiting for deployment to complete data: DeploymentName : jm-acs-1-init data: ResourceGroupName : jm-acs-1 ... data: masterFQDN String jm-app-1mgmt.westeurope.cloudapp.azure.com data: sshMaster0 String ssh [email protected] -A -p 2200 data: agentFQDN String jm-app-1agents.westeurope.cloudapp.azure.com info: group deployment create command OK
Подробнее о деплое из шаблонов – в посте Azure: Resource manager, Azure CLI и деплой resource group.
Проверяем лог деплоя:
$ azure group show jm-acs-1 info: Executing command group show + Listing resource groups + Listing resources for the group ... data: Location: westeurope ...
Находим строку подключения к Swarm Master хосту:
$ azure group deployment show jm-acs-1 jm-acs-1-init | grep ssh data: sshRSAPublicKey String ssh-rsa AAAA*** data: sshMaster0 String ssh [email protected] -A -p 2200
Подключаемся, указав ключ через -i
:
$ ssh [email protected] -A -p 2200 -i ~/.ssh/setevoy_main Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-generic x86_64) ... azureuser@swarm-master-704BADFB-0:~$
Проверяем состояние Docker:
$ docker info Containers: 2 Running: 2 Paused: 0 Stopped: 0 Images: 2 ... Insecure Registries: 127.0.0.0/8
Проверяем его:
$ docker run -it hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world c04b14da8d14: Pull complete Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...
Compose
Устанавливаем переменную DOCKER_HOST
:
$ export DOCKER_HOST=:2375
Создаём docker-compose.yml
:
web: image: "username/jm-test-app1:1.0.0-26.1" ports: - "80:4000" restart: "always"
Т.к. мы используем приватный репозиторий – то требуется авторизация:
$ docker login -u username -p password -e [email protected] Flag --email has been deprecated, will be removed in 1.13. Login Succeeded
Запускаем приложение:
$ docker-compose up -d Pulling web (username/jm-test-app1:1.0.0-26.1)... swarm-agent-704BADFB000000: Pulling username/jm-test-app1:1.0.0-26.1... : downloaded Creating azureuser_web_1
Проверяем:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 725d79d09d2b username/jm-test-app1:1.0.0-26.1 "node /src/server.js" About a minute ago Up About a minute 10.0.0.4:80->4000/tcp swarm-agent-704BADFB000000/azureuser_web_1
Находим URL агента:
$ azure group deployment show jm-acs-1 jm-acs-1-init | grep agentFQDN data: agentFQDN String jm-app-1agents.westeurope.cloudapp.azure.com
И проверяем приложение:
$ curl jm-app-1agents.westeurope.cloudapp.azure.com Hello World
Готово.
Ссылки по теме
Deploy an Azure Container Service cluster
Container management with Docker Swarm
Docker Swarm Clusters on Azure