Pular para conteúdo

🐳 Guia Completo do Docker

1. Introdução

Docker é uma plataforma que permite criar, empacotar e executar aplicações em contêineres — ambientes isolados e portáteis com todas as dependências da aplicação.


1.1. Conceitos Fundamentais

1.1.1. Imagem Docker

Pacote leve e imutável com tudo o que a aplicação precisa para rodar: código, runtime, libs e configs.

1.1.2. Contêiner Docker

Instância de uma imagem em execução. Isolado, mas compartilhando recursos com o host.

1.1.3. Dockerfile

Script com instruções para gerar uma imagem.

1.1.4. Docker Compose

Ferramenta para orquestrar múltiplos contêineres via arquivo YAML.

1.1.5. Volumes

Permitem persistência de dados e compartilhamento entre contêiner e host.


1.2. Comandos Essenciais

1.2.1. Gerenciamento de Contêineres

docker run -it ubuntu bash
docker ps
docker ps -a
docker start <container_id>
docker stop <container_id>
docker rm <container_id>

1.2.2. Imagens

docker pull ubuntu
docker images
docker rmi <image_id>
docker build -t nome_imagem .

1.2.3. Dockerfile (Exemplo)

FROM ubuntu
RUN apt update && apt install -y python3
CMD ["python3"]

1.2.4. Volumes

docker volume create nome_volume
docker volume ls
docker run -v nome_volume:/caminho ubuntu

1.2.5. Redes

docker network ls
docker network create nome_rede
docker network connect nome_rede container

1.2.6. Docker Compose

docker-compose up               # Inicia todos os serviços definidos no docker-compose.yml e mostra os logs no terminal
docker-compose up -d            # Inicia os serviços em segundo plano (modo *detached*)
docker-compose down             # Para os serviços e remove containers, redes e configurações definidas no docker-compose.yml
docker-compose down -v          # Mesmo que o anterior, mas também remove os volumes nomeados, apagando dados persistentes

2. Exemplos Práticos

2.1. Montar um volume com Jupyter + PySpark

docker run -p 8888:8888 -v C:\Users\esped\Documents\Respositorio_git\Repositorio_projetos\image_spark_project:/home/jovyan/work jupyter/pyspark-notebook:spark-3.3.2

Análise:

  • -p 8888:8888: mapeia porta do host para o contêiner.
  • -v caminho_host:/home/jovyan/work: monta volume persistente.
  • jupyter/pyspark-notebook:spark-3.3.2: imagem com suporte a PySpark e Jupyter.

3. Integração Docker + Poetry no Jupyter

3.1. Objetivo

Utilizar o ambiente virtual do Poetry como kernel do Jupyter Notebook.


3.2. Passo a Passo

3.2.1. Verificar Kernels Disponíveis

jupyter kernelspec list

3.2.2. Instalar ipykernel no ambiente do Poetry

poetry add ipykernel

3.2.3. Adicionar Kernel ao Jupyter

python -m ipykernel install --user --name=image-spark-project-py3.10 --display-name "Python (Poetry)"
  • --name: nome interno do kernel
  • --display-name: nome visível no Jupyter

3.3. Selecionar Kernel no Jupyter

  • Vá em Kernel > Change Kernel
  • Escolha Python (Poetry)

4. Resumo Final

✅ Docker cria ambientes isolados
✅ Docker Compose orquestra múltiplos contêineres
✅ Poetry pode ser integrado ao Jupyter via kernel dedicado
✅ Volumes permitem persistência de dados entre host e contêiner