Como gerenciar contêineres e imagens Docker

DockerBeginner
Pratique Agora

Introdução

O Docker revolucionou a forma como desenvolvemos, implantamos e gerenciamos aplicações. Neste tutorial abrangente, você aprenderá a gerenciar contêineres e imagens Docker de forma eficaz, desde a construção e implantação até o monitoramento e solução de problemas. Se você é um usuário iniciante ou experiente do Docker, este guia o equipará com as habilidades essenciais para dominar a arte da gestão de contêineres Docker.

Introdução aos Contêineres Docker

O que é Docker?

Docker é uma plataforma de código aberto que permite aos desenvolvedores construir, implantar e executar aplicações em um ambiente containerizado. Os contêineres são unidades leves, portáteis e autocontidas que empacotam o código da aplicação, as dependências e o ambiente de tempo de execução, facilitando a movimentação da aplicação entre diferentes ambientes computacionais.

Benefícios dos Contêineres Docker

  1. Consistência: Os contêineres Docker garantem que a aplicação execute da mesma forma, independentemente da infraestrutura subjacente.
  2. Escalabilidade: Os contêineres podem ser facilmente escalonados para cima ou para baixo para atender às demandas em mudança.
  3. Eficiência: Os contêineres são mais leves e utilizam menos recursos do que as máquinas virtuais tradicionais.
  4. Portabilidade: Os contêineres Docker podem ser executados em qualquer sistema que suporte o tempo de execução Docker, facilitando a movimentação de aplicações entre diferentes ambientes.

Arquitetura Docker

Docker utiliza uma arquitetura cliente-servidor, onde o cliente Docker se comunica com o daemon Docker (o servidor) para executar diversas operações, como construir, executar e gerenciar contêineres.

graph LD
    subgraph Arquitetura Docker
        client[Cliente Docker]
        daemon[Daemon Docker]
        registry[Registro Docker]
        client -- communicate --> daemon
        daemon -- pull/push --> registry
    end

Componentes Docker

  1. Imagens Docker: As imagens Docker são os blocos de construção dos contêineres. Elas contêm o código da aplicação, as dependências e o ambiente de tempo de execução.
  2. Contêineres Docker: Os contêineres são as instâncias em execução das imagens Docker. Eles são isolados, leves e portáteis.
  3. Registro Docker: O Registro Docker é um sistema de armazenamento e distribuição de imagens Docker. O registro mais popular é o Docker Hub, um registro público fornecido pela Docker.

Começando com Docker

Para começar com Docker, você precisará instalar o tempo de execução Docker em seu sistema. Você pode baixar e instalar o Docker no site oficial da Docker (https://www.docker.com/get-started).

Depois de instalar o Docker, você poderá começar a explorar e trabalhar com contêineres Docker. Vamos prosseguir para a próxima seção para aprender como gerenciar imagens Docker.

Gerenciando Imagens Docker

Baixando Imagens Docker

Para baixar uma imagem Docker de um registro, você pode usar o comando docker pull:

docker pull ubuntu:22.04

Isso baixará a imagem ubuntu:22.04 do registro Docker Hub.

Construindo Imagens Docker

Você pode construir suas próprias imagens Docker usando um Dockerfile, que é um arquivo de texto contendo instruções para a construção da imagem. Aqui está um exemplo de Dockerfile:

FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Para construir a imagem, execute o seguinte comando:

docker build -t my-nginx-app .

Isso criará uma nova imagem Docker chamada my-nginx-app.

Listando Imagens Docker

Você pode listar todas as imagens Docker em seu sistema usando o comando docker images:

docker images

Isso exibirá uma tabela com informações sobre cada imagem, incluindo o nome da imagem, tag, ID da imagem, hora de criação e tamanho.

Marcação de Imagens Docker

Você pode adicionar tags a imagens Docker para ajudar na organização e gerenciamento. Para marcar uma imagem, use o comando docker tag:

docker tag my-nginx-app:latest my-nginx-app:v1.0

Isso criará uma nova tag v1.0 para a imagem my-nginx-app.

Empurrando Imagens Docker

Depois de construir e marcar sua imagem Docker, você pode empurrá-la para um registro usando o comando docker push:

docker push my-nginx-app:v1.0

Isso empurrará a imagem my-nginx-app:v1.0 para o registro padrão (Docker Hub).

Removendo Imagens Docker

Para remover uma imagem Docker, use o comando docker rmi:

docker rmi my-nginx-app:v1.0

Isso removerá a imagem my-nginx-app:v1.0 do seu sistema.

Agora que você aprendeu como gerenciar imagens Docker, vamos para a próxima seção para aprender como executar e implantar contêineres Docker.

Executando e Implantando Contêineres Docker

Executando Contêineres Docker

Para executar um contêiner Docker, use o comando docker run:

docker run -d -p 80:80 my-nginx-app

Isso iniciará um novo contêiner baseado na imagem my-nginx-app e mapeará a porta 80 do host para a porta 80 no contêiner.

Você também pode executar contêineres interativos usando a flag -it:

docker run -it ubuntu:22.04 /bin/bash

Isso iniciará um contêiner Ubuntu interativo e fornecerá um prompt de shell dentro do contêiner.

Gerenciando Contêineres em Execução

Você pode listar todos os contêineres em execução usando o comando docker ps:

docker ps

Para parar um contêiner em execução, use o comando docker stop:

docker stop my-nginx-app

Para iniciar um contêiner parado, use o comando docker start:

docker start my-nginx-app

Acessando Logs de Contêineres

Você pode visualizar os logs de um contêiner em execução usando o comando docker logs:

docker logs my-nginx-app

Isso exibirá os logs do contêiner my-nginx-app.

Executando Comandos em Contêineres

Você pode executar comandos dentro de um contêiner em execução usando o comando docker exec:

docker exec -it my-nginx-app /bin/bash

Isso iniciará uma sessão de shell interativo dentro do contêiner my-nginx-app.

Implantando Contêineres Docker

Para implantar contêineres Docker em um ambiente de produção, você pode usar ferramentas como Docker Compose ou Kubernetes. Essas ferramentas ajudam a gerenciar e orquestrar vários contêineres e suas dependências.

Aqui está um exemplo de um arquivo Docker Compose simples:

version: "3"
services:
  web:
    image: my-nginx-app
    ports:
      - "80:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password

Você pode implantar essa configuração usando o comando docker-compose up.

Usando Docker Compose ou Kubernetes, você pode escalar, gerenciar e implantar suas aplicações em um ambiente containerizado com facilidade.

Resumo

Neste tutorial, você aprendeu os fundamentos de gerenciamento de contêineres e imagens Docker. Agora você sabe como construir, implantar e manter suas aplicações baseadas em Docker, garantindo que elas funcionem de forma suave e eficiente. Ao aproveitar o poder do Docker, você pode otimizar seus processos de desenvolvimento e implantação, levando a um aumento na produtividade e escalabilidade. Continue explorando e experimentando com Docker para aprimorar ainda mais suas habilidades e liberar todo o potencial desta tecnologia transformadora.