Удаление служб, не упомянутых в файле компоновки
На этом этапе мы снова изменим файл 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
и повторно развернув стек, а затем очистили среду, удалив весь стек.