Вывести список всех служб в стеке
На этом этапе вы научитесь выводить список всех служб, работающих в стеке Docker. Прежде чем мы сможем вывести список служб, нам нужно запустить стек. Поскольку Docker Compose не предустановлен, мы сначала установим его, а затем развернем простой стек.
Сначала установим Docker Compose. Мы скачаем бинарный файл и сделаем его исполняемым.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Теперь, когда Docker Compose установлен, создадим простой файл docker-compose.yml для определения нашего стека. Мы создадим файл с именем docker-compose.yml в директории ~/project.
nano ~/project/docker-compose.yml
Добавьте следующее содержимое в файл:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: alpine:latest
command: sleep 3600
Этот файл определяет стек с двумя службами: web, использующей образ nginx, и app, использующей образ alpine. Служба web сопоставляет порт 80 на хосте с портом 80 в контейнере. Служба app просто выполняет команду sleep 3600, чтобы контейнер оставался запущенным.
Сохраните файл и выйдите из редактора (Ctrl+X, Y, Enter в nano).
Теперь развернем стек с помощью команды docker stack deploy. Мы назовем наш стек mystack.
docker stack deploy -c ~/project/docker-compose.yml mystack
Эта команда считывает файл docker-compose.yml и создает определенные в нем службы в виде стека Docker с именем mystack. Вы должны увидеть вывод, указывающий на то, что службы создаются.
После развертывания стека вы можете вывести список всех служб в стеке, используя команду docker stack services, за которой следует имя стека.
docker stack services mystack
Эта команда отобразит таблицу с информацией о службах в стеке mystack, включая их идентификатор, имя, режим, количество реплик, образ и порты.
Вы должны увидеть вывод, похожий на следующий:
ID NAME MODE REPLICAS IMAGE PORTS
xxxxxxxxxxxx mystack_app replicated 1/1 alpine:latest
xxxxxxxxxxxx mystack_web replicated 1/1 nginx:latest *:80->80/tcp
В выводе перечислены службы mystack_app и mystack_web, что подтверждает, что они работают в рамках стека mystack.