Introdução
Neste laboratório, você aprenderá como usar o comando docker compose top para exibir os processos em execução dentro de seus contêineres Docker. Começaremos preparando um simples arquivo docker-compose.yml para definir um serviço, em seguida, iniciaremos o serviço usando o Docker Compose. Finalmente, você usará o comando docker compose top, tanto de forma geral quanto com um nome de serviço específico, para inspecionar os processos em execução dentro dos contêineres.
Prepare um arquivo docker-compose.yml simples
Nesta etapa, prepararemos um arquivo docker-compose.yml simples. Antes de começarmos, vamos entender o que é Docker Compose. Docker Compose é uma ferramenta para definir e executar aplicações Docker com múltiplos contêineres. Com o Compose, você usa um arquivo YAML para configurar os serviços da sua aplicação. Então, com um único comando, você cria e inicia todos os serviços a partir da sua configuração.
Como o Docker Compose não vem pré-instalado no ambiente LabEx, precisamos instalá-lo primeiro. Faremos o download do binário do Docker Compose 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 no diretório ~/project. Este arquivo definirá um único serviço que usa a imagem ubuntu e simplesmente executa o comando sleep infinity para manter o contêiner em execução.
Usaremos o editor nano para criar e editar o arquivo.
nano ~/project/docker-compose.yml
No editor nano, cole o seguinte conteúdo:
version: "3.8"
services:
ubuntu_service:
image: ubuntu
command: sleep infinity
Vamos detalhar este arquivo docker-compose.yml:
version: '3.8'especifica a versão do formato do arquivo Compose.services:define os serviços para sua aplicação.ubuntu_service:é o nome do nosso serviço. Você pode escolher qualquer nome que desejar.image: ubuntuespecifica a imagem Docker a ser usada para este serviço. Neste caso, estamos usando a imagem oficialubuntu. Como a imagem pode não estar presente localmente, o Docker Compose a puxará automaticamente, se necessário.command: sleep infinityespecifica o comando a ser executado quando o contêiner iniciar.sleep infinityé um comando simples que mantém o contêiner em execução indefinidamente.
Após colar o conteúdo, salve o arquivo pressionando Ctrl + X, depois Y para confirmar e Enter para salvar com o nome de arquivo padrão docker-compose.yml.
Para garantir que a imagem ubuntu esteja disponível, vamos puxá-la manualmente usando o comando docker pull. Esta é uma boa prática para garantir que a imagem esteja pronta antes de iniciar o serviço com o Docker Compose.
docker pull ubuntu
Você deve ver a saída indicando que a imagem ubuntu está sendo puxada.
Iniciar os serviços definidos no arquivo docker-compose.yml
Nesta etapa, iniciaremos os serviços definidos no arquivo docker-compose.yml que criamos na etapa anterior. Usaremos o comando docker compose up para isso.
Navegue até o diretório onde você salvou o arquivo docker-compose.yml, que é ~/project.
cd ~/project
Agora, execute o comando docker compose up. A flag -d executa os contêineres em modo detached (desconectado), o que significa que eles serão executados em segundo plano e não bloquearão seu terminal.
docker compose up -d
Você deve ver a saída indicando que o serviço está sendo criado e iniciado. Docker Compose criará uma rede, um volume (se definido, embora não em nosso exemplo simples) e o contêiner para o ubuntu_service.
Para verificar se o contêiner está em execução, você pode usar o comando docker ps.
docker ps
Você deve ver um contêiner listado com a imagem ubuntu e o comando sleep infinity. O status deve ser Up. O nome do contêiner será prefixado com o nome do diretório (project neste caso) e o nome do serviço (ubuntu_service).
Use docker compose top para exibir todos os processos em execução
Nesta etapa, usaremos o comando docker compose top para exibir os processos em execução dentro dos contêineres gerenciados pelo Docker Compose. Este comando é semelhante ao comando top no Linux, mas mostra os processos em execução dentro dos contêineres.
Certifique-se de que você ainda está no diretório ~/project onde seu arquivo docker-compose.yml está localizado.
cd ~/project
Agora, execute o comando docker compose top.
docker compose top
Você deve ver uma saída semelhante à seguinte:
ID NAME PID COMMAND ELAPSED
<container_id> project-ubuntu_service-1 <pid> sleep infinity <time>
Esta saída mostra os processos em execução dentro de cada contêiner gerenciado pelo seu arquivo docker-compose.yml. Em nosso caso, temos apenas um serviço (ubuntu_service), e o único processo em execução é sleep infinity, que é o comando que especificamos no arquivo docker-compose.yml.
A saída inclui:
ID: O ID do contêiner.NAME: O nome do contêiner, que normalmente está no formato<nome_do_diretório>-<nome_do_serviço>-<número_da_instância>.PID: O ID do processo do comando em execução dentro do contêiner.COMMAND: O comando que está sendo executado dentro do contêiner.ELAPSED: O tempo decorrido desde que o comando foi iniciado.
Este comando é útil para inspecionar o que está sendo executado dentro de seus contêineres e solucionar problemas.
Use docker compose top com o nome do serviço para exibir processos específicos
Nesta etapa, aprenderemos como usar o comando docker compose top para exibir os processos de um serviço específico definido em seu arquivo docker-compose.yml. Isso é útil quando você tem vários serviços em execução e deseja inspecionar apenas os processos de um deles.
Certifique-se de que você ainda está no diretório ~/project.
cd ~/project
Para exibir os processos de um serviço específico, você anexa o nome do serviço ao comando docker compose top. Em nosso arquivo docker-compose.yml, o nome do serviço é ubuntu_service.
docker compose top ubuntu_service
Você deve ver uma saída semelhante à da etapa anterior, mas desta vez ela mostrará apenas os processos para o contêiner ubuntu_service:
ID NAME PID COMMAND ELAPSED
<container_id> project-ubuntu_service-1 <pid> sleep infinity <time>
Se você tivesse outros serviços definidos em seu arquivo docker-compose.yml e eles estivessem em execução, executar docker compose top sem um nome de serviço mostraria os processos de todos os serviços. Ao especificar ubuntu_service, filtramos a saída para mostrar apenas os processos dentro do contêiner para esse serviço específico.
Essa abordagem direcionada é útil para depurar e monitorar componentes individuais de sua aplicação multi-contêiner.
Resumo
Neste laboratório, aprendemos como usar o comando docker compose top para exibir os processos em execução dentro dos contêineres Docker gerenciados pelo Docker Compose. Começamos preparando um arquivo docker-compose.yml simples, que envolveu a instalação do Docker Compose e a definição de um serviço usando a imagem ubuntu com o comando sleep infinity para manter o contêiner em execução.
Após a preparação, iniciamos os serviços definidos no arquivo docker-compose.yml. Finalmente, exploramos o uso do comando docker compose top, primeiro para exibir todos os processos em execução em todos os serviços e, em seguida, especificamente para um único serviço, fornecendo seu nome. Essa experiência prática demonstrou como inspecionar os processos em execução dentro de nossos contêineres gerenciados pelo Docker Compose.



