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