Sobes.tech
Junior

Qual é a sua experiência com Docker?

sobes.tech IA

Resposta da IA

Mais de 5 anos de uso ativo de Docker em vários projetos.

A experiência inclui:

  • Desenvolvimento de Dockerfile: Criação de Dockerfiles otimizados e de múltiplas etapas para construir imagens de aplicações (web, microserviços, bases de dados, etc.).
  • Gestão de imagens: Trabalho com Docker Hub, repositórios privados (GitLab Registry, Nexus), etiquetagem, controlo de versões, limpeza de imagens não utilizadas.
  • Trabalho com contêineres: Início, paragem, reinício, monitorização do estado, visualização de logs, execução de comandos dentro do contêiner (docker exec).
  • Docker Compose: Uso para definir e executar aplicações multicontêiner, orquestração de serviços, gestão de redes e volumes.
  • Redes Docker: Compreensão e configuração de diferentes controladores de rede (bridge, host, overlay), criação de redes personalizadas para isolar serviços.
  • Volumes Docker: Uso de volumes nomeados e montagens bind para guardar dados, trocar ficheiros entre o host e o contêiner.
  • Segurança Docker: Compreensão dos fundamentos do isolamento de contêineres, uso de Docker sem root (quando possível), análise de imagens em busca de vulnerabilidades.
  • Integração com CI/CD: Inclusão da construção e publicação de imagens Docker em pipelines CI/CD (Jenkins, GitLab CI, GitHub Actions).
  • Orquestração (conhecimentos básicos): Compreensão geral dos princípios do Kubernetes (desdobramento de contêineres, pods, replicação, serviços), experiência em executar aplicações simples em minikube/Kind para testes.

Exemplos de uso do Docker Compose:

# docker-compose.yaml
version: '3.8'

services:
  app:
    build: .  # Construção da imagem a partir do diretório atual
    ports:
      - "80:80" # Redirecionamento da porta 80 do host para a porta 80 do contêiner
    environment:
      DATABASE_URL: postgres://user:password@db:5432/mydatabase # Variáveis de ambiente
    depends_on:
      - db # Dependência do serviço db

  db:
    image: postgres:14 # Uso da imagem padrão do postgres
    volumes:
      - db_data:/var/lib/postgresql/data # Volume persistente para dados
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydatabase

volumes:
  db_data: # Definição do volume nomeado