Como usar o comando docker service ls para listar serviços

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar efetivamente o comando docker service ls para gerenciar e inspecionar serviços em execução em um Docker Swarm. Você começará listando todos os serviços em seu swarm, garantindo que você tenha uma compreensão básica da saída do comando e das informações que ele fornece.

Com base na listagem básica, você explorará opções de filtragem poderosas. Isso inclui filtrar serviços por seus nomes, permitindo que você localize rapidamente serviços específicos. Você também aprenderá como filtrar por modo de serviço (por exemplo, replicado ou global) e por rótulos (labels), que são pares chave-valor usados para organizar e identificar serviços. Finalmente, você descobrirá como formatar a saída do comando docker service ls para exibir as informações da maneira que melhor se adapta às suas necessidades, tornando mais fácil analisar e interpretar os detalhes do serviço.

Listar todos os serviços no swarm

Nesta etapa, você aprenderá como listar todos os serviços em execução em um Docker Swarm. Antes de listar os serviços, você precisa ter um Docker Swarm inicializado e pelo menos um serviço em execução.

Primeiro, vamos inicializar um Docker Swarm, caso ele ainda não esteja inicializado. Você pode verificar o status do swarm usando o comando docker info. Se a saída incluir "Swarm: active", o swarm já está inicializado. Caso contrário, você precisa inicializá-lo.

docker info

Se o swarm não estiver ativo, inicialize-o:

docker swarm init

Agora, vamos criar um serviço simples para listar. Criaremos um serviço chamado my-web-service usando a imagem nginx. Como estamos usando um ambiente novo, precisamos primeiro fazer o pull da imagem nginx.

docker pull nginx

Agora, crie o serviço:

docker service create --name my-web-service -p 80:80 nginx

Este comando cria um serviço chamado my-web-service a partir da imagem nginx e publica a porta 80 do container para a porta 80 no host.

Para listar todos os serviços no swarm, você usa o comando docker service ls. Este comando mostra informações sobre os serviços, incluindo seu ID, nome, modo, réplicas e a imagem que estão usando.

docker service ls

A saída mostrará o my-web-service que você acabou de criar. Você deve ver seu ID, nome, modo (replicated), o número de réplicas (geralmente 1 por padrão) e a imagem (nginx).

Filtrar serviços por nome

Nesta etapa, você aprenderá como filtrar a lista de serviços por seus nomes usando o comando docker service ls com a flag --filter. Isso é útil quando você tem muitos serviços em execução e deseja ver apenas informações sobre um serviço específico ou um grupo de serviços com nomes semelhantes.

A sintaxe básica para filtrar por nome é docker service ls --filter name=<nome_do_servico>. Você pode fornecer o nome completo do serviço ou parte do nome.

Na etapa anterior, criamos um serviço chamado my-web-service. Vamos usar o filtro para exibir apenas este serviço.

docker service ls --filter name=my-web-service

A saída deve mostrar apenas a linha correspondente ao my-web-service.

Você também pode usar nomes parciais para filtrar. Por exemplo, se você tivesse serviços chamados my-web-service-1 e my-web-service-2, filtrar por name=my-web mostraria ambos. Em nossa configuração atual, filtrar por name=my-web ainda mostrará my-web-service.

docker service ls --filter name=my-web

Este comando demonstra como usar um nome parcial para filtragem. A saída ainda deve listar my-web-service.

Filtrar por nome é uma maneira rápida de restringir a lista de serviços e encontrar as informações que você precisa sobre um serviço específico sem ter que examinar toda a lista.

Filtrar serviços por modo

Nesta etapa, você aprenderá como filtrar a lista de serviços com base em seu modo usando o comando docker service ls com a flag --filter. Os serviços do Docker Swarm podem ser executados em dois modos: replicated (replicado) e global (global).

  • Replicated (Replicado): Este é o modo padrão. O gerenciador do swarm agenda um número especificado de réplicas da tarefa do serviço em nós disponíveis.
  • Global (Global): O swarm executa uma tarefa para o serviço em cada nó disponível.

A sintaxe básica para filtrar por modo é docker service ls --filter mode=<modo>. Você pode usar replicated ou global como o modo.

Nas etapas anteriores, criamos um serviço chamado my-web-service que é executado no modo replicated por padrão. Vamos filtrar os serviços para mostrar apenas aqueles que estão sendo executados no modo replicated.

docker service ls --filter mode=replicated

A saída deve mostrar my-web-service porque é um serviço replicado.

Agora, vamos tentar filtrar por serviços no modo global. Como não criamos nenhum serviço global, este comando não deve mostrar nenhum serviço.

docker service ls --filter mode=global

A saída deste comando deve mostrar apenas a linha do cabeçalho e nenhuma entrada de serviço, pois não há serviços globais em execução.

A filtragem por modo é útil quando você deseja ver apenas serviços de um tipo específico, por exemplo, para verificar o status de todos os seus serviços globais que devem ser executados em cada nó.

Filtrar serviços por rótulo

Nesta etapa, você aprenderá como filtrar a lista de serviços com base em rótulos (labels) usando o comando docker service ls com a flag --filter. Rótulos são pares chave-valor que você pode anexar a objetos Docker, incluindo serviços, para ajudar a organizá-los e identificá-los.

A sintaxe básica para filtrar por rótulo é docker service ls --filter label=<chave>=<valor>. Você pode filtrar por uma chave e valor de rótulo específicos, ou apenas pela presença de uma chave de rótulo.

Primeiro, vamos atualizar nosso my-web-service existente para adicionar um rótulo. Adicionaremos um rótulo environment=development ao serviço.

docker service update --label-add environment=development my-web-service

Este comando atualiza o my-web-service e adiciona o rótulo especificado.

Agora, vamos filtrar os serviços para mostrar apenas aqueles com o rótulo environment=development.

docker service ls --filter label=environment=development

A saída deve mostrar my-web-service porque acabamos de adicionar este rótulo a ele.

Você também pode filtrar apenas pela presença de uma chave de rótulo, independentemente de seu valor. Por exemplo, para listar todos os serviços que possuem o rótulo environment:

docker service ls --filter label=environment

Este comando listará todos os serviços que possuem o rótulo environment, independentemente de seu valor. Em nosso caso, ele ainda mostrará my-web-service.

A filtragem por rótulos é uma maneira poderosa de gerenciar e consultar serviços, especialmente em swarms maiores, onde você pode usar rótulos para categorizar serviços por ambiente, equipe ou aplicação.

Formatar a saída da listagem de serviços

Nesta etapa, você aprenderá como formatar a saída do comando docker service ls usando a flag --format. Isso permite que você personalize as informações exibidas e o formato em que são apresentadas, o que é particularmente útil para scripting ou geração de relatórios.

A flag --format usa o pacote text/template do Go. Você pode especificar os campos que deseja exibir e como eles devem ser formatados. Campos comuns para serviços incluem .ID, .Name, .Mode, .Replicas e .Image.

Vamos começar exibindo apenas o ID e o nome do serviço, separados por uma tabulação.

docker service ls --format "{{.ID}}\t{{.Name}}"

A saída mostrará o ID e o nome de my-web-service, separados por um caractere de tabulação.

Agora, vamos exibir o nome do serviço, a imagem e o modo em um formato mais legível, talvez como uma tabela sem o cabeçalho padrão.

docker service ls --format "table {{.Name}}\t{{.Image}}\t{{.Mode}}"

Usar table no início da string de formato diz ao Docker para formatar a saída como uma tabela. Os campos são separados por tabulações (\t).

Você também pode usar o formato JSON, que é muito útil para processamento programático.

docker service ls --format json

Este comando irá gerar as informações do serviço em formato JSON.

Formatar a saída oferece flexibilidade na forma como você visualiza e usa as informações do serviço. Você pode selecionar campos específicos, alterar os separadores e gerar a saída em diferentes formatos, como tabela ou JSON.

Resumo

Neste laboratório, você aprendeu como usar o comando docker service ls para listar os serviços em execução em um Docker Swarm. Você começou garantindo que um Docker Swarm fosse inicializado e criando um serviço de exemplo. Em seguida, você usou docker service ls para visualizar todos os serviços em execução, compreendendo a saída básica, incluindo ID do serviço, nome, modo, réplicas e imagem.

Além disso, você explorou como filtrar a lista de serviços usando a flag --filter. Você aprendeu a filtrar serviços especificamente por seus nomes, o que é essencial para gerenciar um grande número de serviços e focar nas informações relevantes.