Container de desenvolvimento seguro, isolado e acelerado por GPU (NVIDIA CUDA) para Python (Deep Learning), Node.js, e Jupyter Notebook. Projetado para uso com VS Code Remote Containers, mantendo o seu sistema host (Ubuntu) 100% limpo e padronizado.
O maior diferencial deste ambiente é a separação rigorosa de responsabilidades. Para garantir reprodutibilidade total, o código de Machine Learning ignora as bibliotecas do seu computador físico.
A arquitetura funciona em 3 camadas:
- O Host (Sua Máquina): Roda apenas o Ubuntu e o Driver da NVIDIA. Ele atua puramente como a "ponte" para o hardware físico.
- O Middleware (NVIDIA Container Toolkit): Pega o Driver da NVIDIA e o injeta com segurança dentro do Docker.
- O Sandbox (Dev Container): Roda a imagem oficial
nvidia/cudae instala o PyTorch. O PyTorch já traz embutido o seu próprio CUDA Runtime e cuDNN. Isso significa que o modelo treina de forma idêntica em qualquer máquina, independentemente de qual versão do CUDA Toolkit esteja instalada no sistema operacional anfitrião.
Antes de iniciar o container, a sua máquina física precisa estar preparada com os drivers e ferramentas de comunicação.
Utilize a ferramenta oficial do Ubuntu para detectar e instalar o driver proprietário adequado (recomendado 595 ou superior).
# Instalar a ferramenta de detecção
sudo apt install -y ubuntu-drivers-common
# Listar drivers disponíveis para a placa de vídeo
ubuntu-drivers devices
# Instalar a versão proprietária compatível (Exemplo: 595)
sudo apt install -y nvidia-driver-595
# REINICIE O SISTEMA para carregar o novo driver
sudo rebootOpcional para o Docker, mas essencial para desenvolvimento bare-metal local. Siga as instruções oficiais da NVIDIA para Ubuntu 24.04:
wget [https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin](https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin)
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget [https://developer.download.nvidia.com/compute/cuda/13.2.0/local_installers/cuda-repo-ubuntu2404-13-2-local_13.2.0-595.45.04-1_amd64.deb](https://developer.download.nvidia.com/compute/cuda/13.2.0/local_installers/cuda-repo-ubuntu2404-13-2-local_13.2.0-595.45.04-1_amd64.deb)
sudo dpkg -i cuda-repo-ubuntu2404-13-2-local_13.2.0-595.45.04-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-13-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-2
# Instalar drivers em modo proprietário (foco em estabilidade)
sudo apt-get install -y cuda-driversNota sobre Kernel Modules: O comando acima prioriza a estabilidade instalando os módulos proprietários. Caso necessite trocar para a versão open-source no futuro, basta executar
sudo apt-get install -y nvidia-open.
Adicione as seguintes linhas ao final do seu ficheiro ~/.zshrc ou ~/.bashrc no host para garantir que o sistema encontre os binários:
# ── CUDA & NVIDIA ──────────────────────────────────────────
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export CUDA_VISIBLE_DEVICES=0Esta é a ferramenta que permite ao Docker enxergar a sua RTX 3060:
curl -fsSL [https://nvidia.github.io/libnvidia-container/gpgkey](https://nvidia.github.io/libnvidia-container/gpgkey) | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L [https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list](https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list) | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerdev-container-ml-dp/
├── docker-compose.yml # Orquestração, limites de RAM/Shm e injeção da GPU
├── Dockerfile # Receita baseada no CUDA 13.2-devel + Tools (uv, fnm)
├── entrypoint.sh # Script de inicialização (HMR, permissões, socket)
├── .devcontainer/
│ └── devcontainer.json # Integração direta com o VS Code
└── workspace/ # 📍 SEUS PROJETOS FICAM AQUI (Sincronizado)
Antes do primeiro build, defina a identidade do Git que será aplicada dentro do container.
-
Copie o arquivo de exemplo para o arquivo local:
cp .env.example .env
-
Edite o arquivo
.enve ajuste os campos:GIT_USER_NAME=Seu Nome GIT_USER_EMAIL=seu.email@exemplo.com
-
Suba o ambiente com rebuild para aplicar no image build:
docker compose up -d --build
Este ambiente foi desenhado para ser "Plug & Play".
- Abra o VS Code.
- Arraste a pasta
dev-container-ml-dppara dentro do editor. - Um pop-up verde aparecerá no canto inferior direito. Clique em Reopen in Container (ou pressione
F1> digite Dev Containers: Reopen in Container). - Aguarde o build.
Quando o terminal integrado abrir, você estará dentro de um ambiente Zsh com acesso root virtual (devuser), Python 3.12 gerenciado via uv, e a sua GPU pronta para uso pesado.
Caso necessite reiniciar o ambiente pelo terminal do seu computador (Host), rode os comandos dentro da pasta dev-container-ml-dp:
# Subir o ambiente em background
docker compose up -d
# Verificar se está ativo
docker compose ps
# Reconstruir do zero (após alterar o Dockerfile)
docker compose build --no-cache && docker compose up -dO ambiente foi tunado para evitar gargalos de memória em DataLoaders pesados:
- Shm Size:
8gb(Evita erros de bus error no PyTorch). - Tmpfs:
512MBem/scratchpara checkpoints rápidos.
Sempre crie um ambiente virtual (venv) para cada novo projeto dentro da pasta /workspace. O uv fará isso em milissegundos:
cd /workspace
uv venv meu_projeto_ai
source meu_projeto_ai/bin/activate
# Instalar PyTorch (Usando wheel otimizada)
uv pip install torch torchvision torchaudio --index-url [https://download.pytorch.org/whl/cu126](https://download.pytorch.org/whl/cu126)
# Verificar a aceleração de hardware
torch-checkO container já exporta as portas essenciais para o seu navegador.
- JupyterLab (Porta 8888): Rode o alias
jlabno terminal e acessehttp://localhost:8888. - TensorBoard (Porta 6006): Rode
tensorboard --logdir=runs/ --bind_alle acessehttp://localhost:6006.
| Comando / Alias | Ação |
|---|---|
gpu |
Exibe o status em tempo real da RTX 3060 (nvidia-smi) |
torch-check |
Valida a versão do PyTorch e a disponibilidade da GPU |
jlab |
Inicia o servidor do JupyterLab interativo |
uv pip install X |
Instala pacotes Python instantaneamente via Rust |
fnm use 22 |
Alterna o Node.js para a versão LTS |
docker ps |
Lista e gerencia outros containers rodando no host (Ex: LocalStack) |
Para garantir que o isolamento foi feito corretamente e que o container consegue se comunicar com o hardware e os serviços do host, execute a bateria de testes abaixo dentro do terminal do Dev Container.
Verifica se o container está herdando o Driver do host e enxergando a placa de vídeo física.
gpuOu execute o comando nativo: nvidia-smi
Resultado esperado: A tabela oficial da NVIDIA deve ser impressa na tela, mostrando o modelo NVIDIA GeForce RTX 3060, o driver 595.71.05 e a versão do CUDA 13.2.
Verifica se o socket do Docker foi montado corretamente, permitindo gerenciar outros containers (como o LocalStack da infraestrutura satélite) a partir de dentro do ambiente de desenvolvimento.
docker ps- Resultado esperado: A listagem dos containers ativos no seu computador host. O container
dev-container-mldeve aparecer na lista.
uv --version
fnm --version
node -v- Resultado esperado:
- Versão estável do gerenciador
uv. - Versão ativa do gerenciador
fnm. - Versão do Node.js
v22.x.x(LTS carregado dinamicamente).
O teste definitivo. Inicializa o interpretador do Python 3.12 mapeado no /opt/venv, carrega a biblioteca do PyTorch compilada com suporte a hardware e faz uma chamada direta aos núcleos tensores da placa.
torch-check
*Ou execute o comando nativo:
python3 -c "import torch; print(f'GPU Disponível: {torch.cuda.is_available()}'); print(f'Placa: {torch.cuda.get_device_name(0)}')"
- Resultado esperado:
PyTorch 2.11.0 | CUDA disponível: True | GPU: NVIDIA GeForce RTX 3060
Se todos os quatro blocos responderem conforme o esperado, o ambiente está saudável, estável e pronto para a execução de pipelines de Deep Learning distribuídos e reprodutíveis.