Удаление служб, не упомянутых в файле компоновки
На этом этапе мы снова изменим файл docker-compose.yml, на этот раз удалив службу. Когда мы повторно развернем стек, Docker Swarm обнаружит, что служба больше не определена в файле компоновки и удалит ее. Этот процесс иногда называется "очисткой" (pruning) служб.
Сначала отредактируем файл docker-compose.yml, чтобы удалить службу alpine.
nano ~/project/docker-compose.yml
Удалите всю секцию alpine: из файла. Файл должен вернуться в исходное состояние, определяя только службу web:
version: "3.8"
services:
web:
image: nginx:1.21.6
ports:
- "80:80"
Сохраните измененный файл, нажав Ctrl + X, затем Y, а затем Enter.
Теперь разверните стек снова, используя измененный файл docker-compose.yml.
docker stack deploy -c ~/project/docker-compose.yml mywebstack
Docker Swarm сравнит текущее состояние стека mywebstack с определением в обновленном файле docker-compose.yml. Он заметит, что служба alpine больше не присутствует в файле и удалит соответствующую службу и ее задачи из кластера Swarm. Вы должны увидеть вывод, указывающий, что служба alpine удаляется.
Чтобы убедиться, что служба alpine была удалена, выведите список служб в стеке еще раз.
docker stack services mywebstack
Теперь вы должны увидеть только службу mywebstack_web в списке. Служба mywebstack_alpine должна быть удалена.
Наконец, чтобы очистить среду Swarm, мы можем удалить весь стек.
docker stack rm mywebstack
Эта команда удаляет стек mywebstack, включая все его службы и задачи. Вы должны увидеть вывод, подтверждающий удаление.
Чтобы убедиться, что стек удален, выведите список стеков еще раз.
docker stack ls
Стек mywebstack больше не должен быть в списке.
Вы успешно удалили службу из стека, удалив ее из файла docker-compose.yml и повторно развернув стек, а затем очистили среду, удалив весь стек.