Развертывание нескольких примерных стэков
На этом этапе вы научитесь развертывать несколько стэков в вашем Docker Swarm. Это демонстрирует, как можно управлять разными приложениями или службами независимо в рамках одной кластерной системы (swarm).
Мы развернем два простых стэка: один с использованием Nginx, а другой с использованием Apache HTTP Server.
Сначала создадим каталог для определения стэка Apache. Вернемся в каталог ~/project
и создадим новый каталог с именем my-apache-stack
.
cd ~/project
mkdir my-apache-stack
cd my-apache-stack
Теперь создайте файл с именем docker-compose.yml
внутри каталога my-apache-stack
с помощью редактора nano
.
nano docker-compose.yml
Вставьте следующее содержимое в файл docker-compose.yml
:
version: "3.8"
services:
web:
image: httpd:latest
ports:
- "81:80"
deploy:
replicas: 1
restart_policy:
condition: on-failure
Этот файл docker-compose.yml
определяет службу с именем web
, которая использует образ httpd:latest
. Он сопоставляет порт 81 на хосте с портом 80 в контейнере, чтобы избежать конфликтов портов со стэком Nginx, который мы развернем позже. Также он указывает на одну реплику и политику перезапуска.
Сохраните файл, нажав Ctrl + X
, затем Y
и Enter
.
Перед развертыванием загрузим образ httpd:latest
.
docker pull httpd:latest
Теперь развернем стэк Apache с помощью команды docker stack deploy
. Мы назовем этот стэк apache_stack
.
docker stack deploy -c docker-compose.yml apache_stack
Эта команда развертывает стэк Apache.
Далее вернемся в каталог my-nginx-stack
, чтобы снова развернуть стэк Nginx.
cd ~/project/my-nginx-stack
Развернем стэк Nginx с помощью команды docker stack deploy
. Мы назовем этот стэк nginx_stack
.
docker stack deploy -c docker-compose.yml nginx_stack
Теперь убедимся, что оба стэка были успешно развернуты. Выведем список развернутых стэков.
docker stack ls
Вы должны увидеть в списке как apache_stack
, так и nginx_stack
.
Вы также можете проверить службы каждого стэка отдельно.
docker stack services apache_stack
docker stack services nginx_stack
Вы должны увидеть службу apache_stack_web
и службу nginx_stack_web
, обе запущенные с 1 из 1 реплик.
Вы можете получить доступ к веб-серверу Apache, открыв веб-браузер и перейдя по IP-адресу виртуальной машины LabEx на порту 81. Вы должны увидеть стандартную приветственную страницу Apache. Веб-сервер Nginx по-прежнему должен быть доступен на порту 80.