📝 BLOG

Docker e Containerização: Conceitos Básicos e Uso

Docker empacota aplicações em contêineres para implantação consistente e portátil. Este guia cobre os fundamentos do Docker, escrita de Dockerfile e gerenciamento de contêineres.

Atualizado em:

Preparado por: Gsetsoft

Docker e Containerização: Conceitos Básicos e Uso

O que é Docker?

Docker é uma plataforma que empacota aplicações e suas dependências em contêineres. Contêineres são ambientes de execução leves e isolados.

VM vs Container: Máquinas virtuais executam um sistema operacional completo (GBs). Contêineres compartilham o kernel do SO host e ocupam MBs.

Consistência: Resolve o problema de 'funciona na minha máquina'. Os ambientes de desenvolvimento, teste e produção usam o mesmo contêiner.

Portabilidade: Contêineres funcionam em qualquer plataforma compatível com Docker (Linux, Windows, Mac, cloud).

Conceitos Fundamentais do Docker

Image: Modelo para um contêiner. Armazenada como camadas somente leitura. Construída a partir de um Dockerfile.

Container: Instância em execução de uma imagem. Cada contêiner executa como um processo isolado.

Dockerfile: Arquivo de texto que define como construir uma imagem. Contém instruções como FROM, RUN, COPY, CMD.

Registry: Repositório que armazena e distribui imagens. Docker Hub é o registry público mais popular.

Volume: Armazenamento usado para persistir dados do contêiner. Os dados são preservados mesmo se o contêiner for removido.

Escrita de Dockerfile

FROM node:18-alpine: Use Node.js 18 (Alpine Linux) como imagem base. Alpine é uma imagem base de tamanho pequeno.

WORKDIR /app: Defina o diretório de trabalho como /app. Todos os comandos subsequentes executam neste diretório.

COPY package*.json ./: Copie package.json e package-lock.json. Instale dependências com RUN npm install.

COPY . .: Copie todo o código fonte. Crie o build de produção com RUN npm run build.

EXPOSE 3000: Especifique que o contêiner escuta na porta 3000. Defina o comando a executar quando o contêiner iniciar com CMD ["npm", "start"].

Comandos Básicos do Docker

docker build -t myapp:1.0 .: Construa a imagem a partir do Dockerfile. Etiquete a imagem com nome:versão usando -t.

docker run -p 3000:3000 myapp:1.0: Execute o contêiner. Mapeie a porta do host para a porta do contêiner com -p.

docker ps: Liste os contêineres em execução. docker ps -a: Liste todos os contêineres (incluindo os parados).

docker stop <container_id>: Pare o contêiner. docker rm <container_id>: Remova o contêiner.

docker images: Liste as imagens locais. docker rmi <image_id>: Remova a imagem.

Docker Compose

Docker Compose é uma ferramenta para definir e gerenciar aplicações multi-contêiner. Configurado com arquivo docker-compose.yml.

Serviços: Cada serviço é um contêiner. Defina serviços como web (frontend), api (backend), db (banco de dados).

Volumes: Defina volumes para persistência de dados. networks: Crie networks para comunicação entre serviços.

docker compose up: Inicie todos os serviços. docker compose down: Pare e remova todos os serviços.

docker compose up -d: Execute em modo detached (segundo plano). docker compose logs -f: Acompanhe os logs.

Melhores Práticas

Imagens pequenas: Use imagens base Alpine ou distroless. Remova dependências de build da imagem final com multi-stage build.

Layer caching: COPY dependências (que mudam raramente) primeiro, código (que muda frequentemente) depois. Isso otimiza o build cache.

.dockerignore: Ignore arquivos desnecessários (node_modules, .git, logs). Isso reduz o build context.

Segurança: Use usuário non-root em vez de root. Crie usuário com RUN adduser --disabled-password appuser.

Health check: Use a instrução HEALTHCHECK para realizar verificação de saúde do contêiner. Docker reinicia automaticamente contêineres unhealthy.

Sua escolha de privacidade

Cookies essenciais permitem segurança e sessões. Contamos visitas básicas; com sua permissão ativamos análises adicionais. Política de Cookies