Gerenciamento de Contêineres com Comandos Essenciais do Docker

O Docker revoluciona a forma como empacotamos e executamos aplicações, encapsulando-as com todas as suas dependências – bibliotecas, configurações e ferramentas de sistema – em unidades padronizadas conhecidas como contêineres. Essa abordagem garante que as aplicações funcionem de forma idêntica em qualquer ambiente, eliminando problemas de compatibilidade.

Para otimizar o uso do Docker, é crucial entender a distinção entre dois conceitos fundamentais: **imagens** e **contêineres**.

  • Imagens Docker: São modelos estáticos e imutáveis que contêm o código da aplicação, o runtime, bibliotecas, variáveis de ambiente e arquivos de configuração. Uma imagem é a "receita" para criar um contêiner, não sendo executável por si só.
  • Contêineres Docker: São instâncias executáveis e isoladas de uma imagem. Eles representam a aplicação em execução, com seu próprio sistema de arquivos, rede e processo. Contêineres são dinâmicos; podem ser iniciados, parados, pausados, removidos e conectados a outros contêineres.

Comandos Fundamentais do Docker

A seguir, uma tabela dos comandos Docker mais utilizados para gerenciar seu ambiente:

Comando Função Exemplo de Uso
docker run Cria e inicia um novo contêiner a partir de uma imagem, executando um comando. docker run -d -p 80:80 meu_servidor
docker ps Lista todos os contêineres atualmente em execução. docker ps
docker ps -a Lista todos os contêineres, incluindo os que estão parados. docker ps -a
docker build Constrói uma imagem Docker a partir de um Dockerfile. docker build -t minha_aplicacao .
docker images Exibe todas as imagens Docker armazenadas localmente. docker images
docker pull Baixa uma imagem de um registro Docker (como o Docker Hub). docker pull ubuntu:latest
docker push Envia uma imagem para um registro Docker. docker push minha_conta/minha_imagem
docker exec Executa um comando dentro de um contêiner em execução. docker exec -it meu_contêiner bash
docker stop Interrompe um ou mais contêineres em execução. docker stop meu_contêiner
docker start Inicia um ou mais contêineres previamente parados. docker start meu_contêiner
docker restart Reinicia um contêiner específico. docker restart meu_contêiner
docker rm Remove um ou mais contêineres. docker rm meu_contêiner
docker rmi Deleta uma ou mais imagens Docker locais. docker rmi minha_imagem
docker logs Exibe os logs de um contêiner. docker logs meu_contêiner
docker inspect Retorna informações detalhadas sobre um contêiner ou imagem. docker inspect meu_contêiner
docker network ls Lista todas as redes Docker no sistema. docker network ls
docker volume ls Lista todos os volumes Docker no sistema. docker volume ls
docker-compose up Inicia e constrói serviços definidos em um arquivo docker-compose.yml. docker-compose up -d
docker-compose down Para e remove serviços, redes e volumes definidos por docker-compose. docker-compose down
docker info Exibe informações detalhadas sobre o ambeinte Docker. docker info
docker version Mostra a versão do cliente e do daemon Docker. docker version
docker stats Exibe o uso de recursos (CPU, memória, rede) dos contêineres em tempo real. docker stats
docker login Autentica-se em um registro Docker. docker login
docker logout Desloga-se de um registro Docker. docker logout

Exemplos Práticos de Comandos Docker

1. Obtendo Imagens (docker pull)

Para baixar uma imagem de um registro remoto, como o Docker Hub, utilize o comando docker pull. Por exemplo, para obter a imagem oficial do Python na sua versão 3.9-slim-buster:

docker pull python:3.9-slim-buster

Para verificar as imagens que estão armazenadas localmente em sua máquina, use:

docker images

Este comando listará informações como REPOSITORY (nome do repositório), TAG (rótulo da versão), IMAGE ID (identificador único), CREATED (data de criação) e SIZE (tamanho da imagem).

2. Definindo uma Aplicação com Dockerfile

Considere uma aplicação web simples desenvolvida em Flask, que será encapsulada em um contêiner Docker. Primeiro, criaremos um arquivo requirements.txt para as dependências:

Flask

Em seguida, o código-fonte da aplicação, salvo como app_servidor.py:

# arquivo: app_servidor.py
from flask import Flask

app_docker_flask = Flask(__name__)

@app_docker_flask.route('/')
def pagina_inicial():
   return 'Bem-vindo ao meu Contêiner Flask!'

if __name__ == '__main__':
   app_docker_flask.run(host='0.0.0.0', port=5000)
   

Finalmente, o Dockerfile, que instrui o Docker sobre como construir a imagem da nossa aplicação:

FROM python:3.9-slim-buster
WORKDIR /app_web
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app_servidor.py"]
   

Este Dockerfile baseia-se na imagem Python 3.9, define o diretório de trabalho como /app_web, instala as dependências do Flask e, por fim, executa nossa aplicação na porta 5000.

3. Construindo a Imagem (docker build)

Com o Dockerfile e os arquivos da aplicação no mesmo diretório, podemos construir a imagem Docker. O comando docker build compila as instruções do Dockerfile, criando uma nova imagem:

docker build -t meu-app-flask:v1.0 .

O argumento -t atribui um nome (meu-app-flask) e uma tag de versão (v1.0) à imagem. O ponto (.) indica que o Dockerfile está no diretório atual.

4. Iniciando um Contêiner (docker run)

Após a construção da imagem, podemos iniciar um contêiner a partir dela. O comendo docker run cria e executa uma instância da imagem, mapeando portas para que a aplicação seja acessível externamente:

docker run -d -p 8080:5000 --name cont_flask_web meu-app-flask:v1.0
  • -d: Executa o contêiner em modo "detached" (segundo plano).
  • -p 8080:5000: Mapeia a porta 8080 da máquina hospedeira para a porta 5000 do contêiner.
  • --name cont_flask_web: Atribui um nome descritivo ao contêiner.

Para verificar se a aplicação está funcionando, acesse http://localhost:8080 em seu navegador. Você deverá ver a mensagem "Bem-vindo ao meu Contêiner Flask!".

5. Parando um Contêiner (docker stop)

Para interromper um contêiner em execução sem removê-lo, use docker stop, especificando seu nome ou ID:

docker stop cont_flask_web

6. Removendo um Contêiner (docker rm)

Para remover um contêiner parado do seu sistema, utilize docker rm. Contêineres em execução devem ser parados antes de serem removidos:

docker rm cont_flask_web

7. Excluindo uma Imagem (docker rmi)

Se uma imagem não é mais necessária, ela pode ser removida do armazenamento local com docker rmi. Certifique-se de que nenhum contêiner esteja utilizando a imagem antes de tentar excluí-la:

docker rmi meu-app-flask:v1.0

8. Visualizando Logs do Contêiner (docker logs)

Para inspecionar a saída padrão (stdout/stderr) de um contêiner, que geralmente inclui logs da aplicação, use docker logs:

docker logs cont_flask_web

9. Inspecionando Detalhes do Contêiner (docker inspect)

Para obter informações detalhadas sobre a configuração, status e rede de um contêiner ou imagem, o comando docker inspect é muito útil:

docker inspect cont_flask_web

10. Acessando o Shell do Contêiner (docker exec)

Para executar comandos interativamente dentro de um contêiner em funcionamento, como acessar seu terminal para depuração, use docker exec:

docker exec -it cont_flask_web bash
  • -it: Combinação de -i (interativo) e -t (aloca um pseudo-TTY), essencial para interagir com o terminal.
  • bash: O comando a ser executado dentro do contêiner (neste caso, o shell bash).

Tags: Docker contêineres Imagens Dockerfile Flask

Publicado em 7-14 06:54