Listar todos os serviços em uma pilha
Nesta etapa, você aprenderá como listar todos os serviços em execução dentro de uma pilha Docker. Antes de podermos listar os serviços, precisamos ter uma pilha em execução. Como o Docker Compose não está pré-instalado, primeiro o instalaremos e, em seguida, implantaremos uma pilha simples.
Primeiro, vamos instalar o Docker Compose. Faremos o download do binário e o tornaremos 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
Agora que o Docker Compose está instalado, vamos criar um arquivo docker-compose.yml simples para definir nossa pilha. Criaremos um arquivo chamado docker-compose.yml no diretório ~/project.
nano ~/project/docker-compose.yml
Adicione o seguinte conteúdo ao arquivo:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: alpine:latest
command: sleep 3600
Este arquivo define uma pilha com dois serviços: web usando a imagem nginx e app usando a imagem alpine. O serviço web mapeia a porta 80 no host para a porta 80 no container. O serviço app simplesmente executa o comando sleep 3600 para manter o container em execução.
Salve o arquivo e saia do editor (Ctrl+X, Y, Enter no nano).
Agora, vamos implantar a pilha usando docker stack deploy. Vamos nomear nossa pilha mystack.
docker stack deploy -c ~/project/docker-compose.yml mystack
Este comando lê o arquivo docker-compose.yml e cria os serviços definidos nele como uma pilha Docker chamada mystack. Você deve ver a saída indicando que os serviços estão sendo criados.
Depois que a pilha for implantada, você pode listar todos os serviços na pilha usando o comando docker stack services seguido pelo nome da pilha.
docker stack services mystack
Este comando exibirá uma tabela mostrando informações sobre os serviços na pilha mystack, incluindo seu ID, nome, modo, réplicas, imagem e portas.
Você deve ver uma saída semelhante a esta:
ID NAME MODE REPLICAS IMAGE PORTS
xxxxxxxxxxxx mystack_app replicated 1/1 alpine:latest
xxxxxxxxxxxx mystack_web replicated 1/1 nginx:latest *:80->80/tcp
A saída lista os serviços mystack_app e mystack_web, confirmando que eles estão em execução como parte da pilha mystack.