Docker & Podman Deployment¶
Run Bazzite Pods on any platform with Docker or Podman.
Prerequisites¶
Docker¶
- Linux: Install Docker Engine
- macOS/Windows: Install Docker Desktop
Podman¶
- Linux: Install Podman
- macOS:
brew install podman - Windows: Install Podman Desktop
NVIDIA GPU (Optional)¶
For GPU support on Linux, install NVIDIA Container Toolkit:
# Ubuntu/Debian
curl -fsSL 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 | \
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-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# Fedora/RHEL
sudo dnf install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Quick Start¶
# NVIDIA GPU
docker run -it --rm --gpus all -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable
# CPU-only (macOS/Windows/Linux without GPU)
docker run -it --rm -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable
# AMD/Intel GPU (Linux)
docker run -it --rm --device=/dev/dri -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable
Pod Examples¶
nvidia-python (ML/AI)¶
# Interactive shell
docker run -it --rm --gpus all -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable
# Run training script
docker run --rm --gpus all -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable \
pixi run --manifest-path /opt/pixi/pixi.toml python /workspace/train.py
jupyter (JupyterLab)¶
# Start JupyterLab (access http://localhost:8888)
docker run -it --rm --gpus all -p 8888:8888 -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-jupyter:stable
# Different port
docker run -it --rm --gpus all -p 9999:8888 -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-jupyter:stable
devops (Cloud Tools)¶
# With credentials
docker run -it --rm \
-v $(pwd):/workspace \
-v ~/.aws:/home/jovian/.aws:ro \
-v ~/.kube:/home/jovian/.kube:ro \
ghcr.io/atrawog/bazzite-ai-pod-devops:stable
# With environment variables
docker run -it --rm \
-e AWS_ACCESS_KEY_ID=xxx \
-e AWS_SECRET_ACCESS_KEY=xxx \
-v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-devops:stable
playwright (Browser Automation)¶
# With VNC access (connect to localhost:5900)
docker run -it --rm -p 5900:5900 -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-playwright:stable
# Run headless tests
docker run --rm -v $(pwd):/workspace \
ghcr.io/atrawog/bazzite-ai-pod-playwright:stable \
pixi run --manifest-path /opt/pixi/pixi.toml pytest /workspace/tests/
Common Options¶
Volume Mounts¶
# Working directory
-v $(pwd):/workspace
# AWS credentials (read-only)
-v ~/.aws:/home/jovian/.aws:ro
# Kubernetes config (read-only)
-v ~/.kube:/home/jovian/.kube:ro
# SSH keys (read-only)
-v ~/.ssh:/home/jovian/.ssh:ro
# Git config
-v ~/.gitconfig:/home/jovian/.gitconfig:ro
Port Publishing¶
Environment Variables¶
# AWS
-e AWS_PROFILE=myprofile
-e AWS_DEFAULT_REGION=us-east-1
# CUDA
-e CUDA_VISIBLE_DEVICES=0,1
# General
-e MY_VAR=value
GPU Access¶
# NVIDIA (all GPUs)
--gpus all
# NVIDIA (specific GPU)
--gpus '"device=0"'
# AMD/Intel
--device=/dev/dri
Docker Compose¶
For multi-container setups:
# docker-compose.yml
version: '3.8'
services:
jupyter:
image: ghcr.io/atrawog/bazzite-ai-pod-jupyter:stable
ports:
- "8888:8888"
volumes:
- ./notebooks:/workspace
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
devops:
image: ghcr.io/atrawog/bazzite-ai-pod-devops:stable
volumes:
- ./infrastructure:/workspace
- ~/.aws:/home/jovian/.aws:ro
- ~/.kube:/home/jovian/.kube:ro
Troubleshooting¶
GPU Not Detected¶
# Verify GPU on host
nvidia-smi
# Check container toolkit
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi
Permission Denied¶
Container runs as user jovian (UID 1000). If you get permission errors:
# Run as root (not recommended)
docker run --user root ...
# Better: fix host directory permissions
chmod 755 ./my-project
Out of Memory¶
# Limit memory
docker run --memory=8g --gpus all ...
# In Python, clear GPU memory
import torch
torch.cuda.empty_cache()
See Also¶
- Kubernetes Guide - For production deployments
- HPC Guide - For research clusters
- NVIDIA Container Toolkit