Remover serviços não mais referenciados no arquivo compose
Nesta etapa, modificaremos nosso arquivo docker-compose.yml novamente, desta vez removendo um serviço. Quando reimplantarmos a pilha, o Docker Swarm detectará que um serviço não está mais definido no arquivo Compose e o removerá. Esse processo é, às vezes, referido como "podar" (pruning) serviços.
Primeiro, vamos editar o arquivo docker-compose.yml para remover o serviço alpine.
nano ~/project/docker-compose.yml
Remova toda a seção alpine: do arquivo. O arquivo deve retornar ao seu estado original, definindo apenas o serviço web:
version: "3.8"
services:
web:
image: nginx:1.21.6
ports:
- "80:80"
Salve o arquivo modificado pressionando Ctrl + X, depois Y e, em seguida, Enter.
Agora, implante a pilha novamente usando o arquivo docker-compose.yml modificado.
docker stack deploy -c ~/project/docker-compose.yml mywebstack
O Docker Swarm comparará o estado atual da pilha mywebstack com a definição no arquivo docker-compose.yml atualizado. Ele notará que o serviço alpine não está mais presente no arquivo e removerá o serviço correspondente e suas tarefas do Swarm. Você deve ver a saída indicando que o serviço alpine está sendo removido.
Para verificar se o serviço alpine foi removido, liste os serviços na pilha novamente.
docker stack services mywebstack
Você agora deve ver apenas o serviço mywebstack_web listado. O serviço mywebstack_alpine deve ter desaparecido.
Finalmente, para limpar o ambiente Swarm, podemos remover toda a pilha.
docker stack rm mywebstack
Este comando remove a pilha mywebstack, incluindo todos os seus serviços e tarefas. Você deve ver a saída confirmando a remoção.
Para verificar se a pilha foi removida, liste as pilhas novamente.
docker stack ls
O mywebstack não deve mais ser listado.
Você podou com sucesso um serviço de sua pilha removendo-o do arquivo docker-compose.yml e reimplantando, e então limpou o ambiente removendo toda a pilha.