Como usar o comando docker stack ls para listar stacks

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker stack ls para listar as pilhas (stacks) do Docker. Começaremos instalando o Docker Compose, que é essencial para definir e implantar aplicações multi-container como pilhas. Em seguida, você implantará uma pilha (stack) simples de serviço web usando um arquivo docker-compose.yml para ter uma pilha para listar.

Após a implantação, você explorará diferentes maneiras de listar as pilhas usando docker stack ls. Isso inclui listar todas as pilhas em execução, listar pilhas com um formato de saída personalizado para exibir informações específicas e listar pilhas em formato JSON para processamento programático.

Listar todas as stacks

Nesta etapa, você aprenderá como listar todas as pilhas (stacks) do Docker em execução no seu sistema. Uma pilha (stack) do Docker é uma coleção de serviços que são implantados juntos. Antes de podermos listar as pilhas, precisamos instalar o Docker Compose, que é usado para definir e executar aplicações Docker multi-container.

Primeiro, vamos instalar o Docker Compose. Vamos baixar o binário do Docker Compose e torná-lo executável.

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

O primeiro comando baixa o binário do Docker Compose do repositório oficial do GitHub. $(uname -s) e $(uname -m) são usados para obter o sistema operacional e a arquitetura da sua máquina, garantindo que você baixe o binário correto. O segundo comando torna o arquivo baixado executável.

Agora que o Docker Compose está instalado, vamos verificar a instalação verificando a versão.

docker-compose --version

Você deve ver a versão do Docker Compose instalada na saída.

Para demonstrar a listagem de pilhas, precisamos implantar uma pilha simples. Criaremos um arquivo docker-compose.yml que define um serviço web simples.

nano ~/project/docker-compose.yml

Cole o seguinte conteúdo no arquivo docker-compose.yml:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Este arquivo docker-compose.yml define um único serviço chamado web que usa a imagem nginx:latest e mapeia a porta 80 no host para a porta 80 no container.

Agora, vamos implantar esta pilha usando o comando docker stack deploy. Vamos nomear nossa pilha mywebstack.

docker stack deploy -c ~/project/docker-compose.yml mywebstack

A flag -c especifica o arquivo Compose a ser usado, e mywebstack é o nome que estamos dando à nossa pilha. Você verá uma saída indicando que os serviços estão sendo criados e implantados.

Após implantar a pilha, você pode listar todas as pilhas em execução usando o comando docker stack ls.

docker stack ls

Este comando exibirá uma lista de todas as pilhas implantadas, incluindo o nome da pilha, o número de serviços e o número desejado e atual de réplicas para cada serviço. Você deve ver mywebstack listado na saída.

Listar stacks com formato personalizado

Na etapa anterior, você aprendeu como listar todas as pilhas (stacks) do Docker implantadas usando o formato de saída padrão. Nesta etapa, você aprenderá como personalizar o formato de saída do comando docker stack ls para exibir apenas as informações que você precisa.

O comando docker stack ls suporta a flag --format, que permite que você especifique um template Go para formatar a saída. Isso é útil quando você deseja extrair informações específicas ou integrar a saída com outras ferramentas.

Vamos começar listando os nomes das pilhas e o número de serviços em cada pilha. Podemos usar os campos de template {{.Name}} e {{.Services}} para isso.

docker stack ls --format "{{.Name}}: {{.Services}}"

Neste comando, --format "{{.Name}}: {{.Services}}" diz ao Docker para exibir o nome de cada pilha seguido por dois pontos e, em seguida, o número de serviços. {{.Name}} e {{.Services}} são placeholders (marcadores) que serão substituídos pelos valores reais para cada pilha.

Você deve ver uma saída semelhante a mywebstack: 1, indicando o nome da pilha e o número de serviços que ela contém.

Você também pode incluir outros campos na string de formato. Por exemplo, vamos listar o nome da pilha e o número desejado de réplicas.

docker stack ls --format "Stack Name: {{.Name}}, Desired Replicas: {{.Desired}}"

Aqui, estamos usando o campo {{.Desired}} para exibir o número desejado de réplicas para os serviços na pilha.

A flag --format é muito flexível e permite que você combine diferentes campos e adicione texto personalizado. Você pode encontrar uma lista de campos disponíveis na documentação do Docker para o comando docker stack ls.

Vamos tentar mais um exemplo, listando o nome da pilha e o número atual de réplicas.

docker stack ls --format "Stack: {{.Name}}, Current Replicas: {{.Current}}"

Este comando usa o campo {{.Current}} para mostrar o número atual de réplicas em execução para os serviços na pilha.

Usar a flag --format permite que você adapte a saída de docker stack ls às suas necessidades específicas, tornando mais fácil processar e analisar as informações sobre suas pilhas implantadas.

Listar stacks em formato JSON

Nas etapas anteriores, você aprendeu como listar as pilhas (stacks) do Docker usando os formatos padrão e personalizados. Nesta etapa, você aprenderá como listar as pilhas do Docker em formato JSON. Isso é particularmente útil quando você precisa analisar a saída programaticamente ou integrá-la com outros sistemas.

O comando docker stack ls, como muitos outros comandos do Docker, suporta a opção --format json para gerar os resultados como um array JSON.

Vamos listar as pilhas implantadas em formato JSON.

docker stack ls --format json

Este comando gerará um array JSON, onde cada elemento no array representa uma pilha do Docker e contém informações sobre a pilha, como seu nome, serviços, réplicas desejadas e réplicas atuais.

A saída terá uma aparência semelhante a esta (o conteúdo exato dependerá das pilhas que você tiver implantado):

[
  {
    "Name": "mywebstack",
    "Services": "1",
    "Desired": "1",
    "Current": "1"
  }
]

Esta saída JSON é estruturada e fácil de analisar usando linguagens de script ou outras ferramentas. Por exemplo, você pode usar uma ferramenta como jq para extrair campos específicos da saída JSON.

Vamos instalar o jq, um processador JSON de linha de comando leve e flexível.

sudo apt-get update
sudo apt-get install -y jq

Agora que o jq está instalado, vamos usá-lo para extrair apenas os nomes das pilhas implantadas da saída JSON.

docker stack ls --format json | jq '.[].Name'

Neste comando, canalizamos a saída JSON de docker stack ls --format json para jq. '.[].Name' é um filtro jq que seleciona o campo Name de cada objeto no array JSON.

Você deve ver o nome da sua pilha implantada, mywebstack, como a saída.

Listar pilhas em formato JSON fornece uma maneira estruturada de acessar informações da pilha, o que é essencial para fins de automação e integração.

Resumo

Neste laboratório, você aprendeu como usar o comando docker stack ls para listar as pilhas (stacks) do Docker. O laboratório começou guiando você pela instalação do Docker Compose, um pré-requisito para trabalhar com pilhas do Docker, e verificando sua instalação. Em seguida, você criou um arquivo docker-compose.yml simples, definindo um serviço web básico, e o implantou como uma pilha chamada mywebstack usando docker stack deploy.

As etapas subsequentes, embora não totalmente detalhadas no conteúdo fornecido, teriam coberto a listagem de todas as pilhas implantadas usando docker stack ls, a personalização do formato de saída para exibir informações específicas e a listagem de pilhas em formato JSON para processamento programático. Essa experiência prática forneceu conhecimento prático de como gerenciar e inspecionar as pilhas do Docker usando o comando docker stack ls e suas várias opções.