Skip to content

Quick Start

Bazzite Pods are standard OCI containers. Choose your platform:

nvidia-python (ML/AI Development)

# With NVIDIA GPU
docker run -it --rm --gpus all -v $(pwd):/workspace \
  ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable

# CPU-only (no GPU)
docker run -it --rm -v $(pwd):/workspace \
  ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable

# AMD/Intel GPU
docker run -it --rm --device=/dev/dri -v $(pwd):/workspace \
  ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable
apiVersion: batch/v1
kind: Job
metadata:
  name: pytorch-training
spec:
  template:
    spec:
      containers:
      - name: pytorch
        image: ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable
        command: ["pixi", "run", "--manifest-path", "/opt/pixi/pixi.toml", "python", "/workspace/train.py"]
        resources:
          limits:
            nvidia.com/gpu: 1
        volumeMounts:
        - name: workspace
          mountPath: /workspace
      volumes:
      - name: workspace
        persistentVolumeClaim:
          claimName: ml-workspace
      restartPolicy: OnFailure
# Pull image once
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable

# Interactive session
apptainer exec --nv bazzite-ai-pod-nvidia-python_stable.sif bash

# Slurm batch job
srun --gres=gpu:1 apptainer exec --nv \
  bazzite-ai-pod-nvidia-python_stable.sif \
  pixi run --manifest-path /opt/pixi/pixi.toml python train.py
# Pull and run with Apptainer
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable
apptainer shell --nv bazzite-ai-pod-nvidia-python_stable.sif

jupyter (JupyterLab)

# Start JupyterLab (access at http://localhost:8888)
docker run -it --rm --gpus all -p 8888:8888 -v $(pwd):/workspace \
  ghcr.io/atrawog/bazzite-ai-pod-jupyter:stable
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jupyterlab
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jupyterlab
  template:
    metadata:
      labels:
        app: jupyterlab
    spec:
      containers:
      - name: jupyter
        image: ghcr.io/atrawog/bazzite-ai-pod-jupyter:stable
        ports:
        - containerPort: 8888
        resources:
          limits:
            nvidia.com/gpu: 1
---
apiVersion: v1
kind: Service
metadata:
  name: jupyterlab
spec:
  selector:
    app: jupyterlab
  ports:
  - port: 8888
    targetPort: 8888
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-jupyter:stable

# Start JupyterLab (will print URL)
apptainer exec --nv -B $(pwd):/workspace \
  bazzite-ai-pod-jupyter_stable.sif \
  jupyter lab --ip=0.0.0.0 --no-browser
# Pull and run JupyterLab with Apptainer
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-jupyter:stable
apptainer exec --nv bazzite-ai-pod-jupyter_stable.sif jupyter lab --ip=0.0.0.0 --no-browser
# Access at http://localhost:8888

devops (Cloud Infrastructure)

# Mount AWS/cloud 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
apiVersion: v1
kind: Pod
metadata:
  name: devops-shell
spec:
  containers:
  - name: devops
    image: ghcr.io/atrawog/bazzite-ai-pod-devops:stable
    command: ["sleep", "infinity"]
    volumeMounts:
    - name: kubeconfig
      mountPath: /home/jovian/.kube
      readOnly: true
  volumes:
  - name: kubeconfig
    secret:
      secretName: kubeconfig
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-devops:stable
apptainer exec bazzite-ai-pod-devops_stable.sif bash
# Pull and run with Apptainer
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-devops:stable
apptainer shell bazzite-ai-pod-devops_stable.sif

playwright (Browser Automation)

# Start 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
apiVersion: v1
kind: Pod
metadata:
  name: playwright-test
spec:
  containers:
  - name: playwright
    image: ghcr.io/atrawog/bazzite-ai-pod-playwright:stable
    ports:
    - containerPort: 5900
      name: vnc
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-playwright:stable
apptainer exec bazzite-ai-pod-playwright_stable.sif bash
# Pull and run with Apptainer
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-playwright:stable
apptainer shell bazzite-ai-pod-playwright_stable.sif

Common Patterns

Volume Mounting

Your current directory mounts at /workspace inside the container:

docker run -it --rm -v $(pwd):/workspace ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable
# Inside container: cd /workspace

Credential Mounting

# AWS credentials
docker run -it --rm -v ~/.aws:/home/jovian/.aws:ro ...

# Kubernetes config
docker run -it --rm -v ~/.kube:/home/jovian/.kube:ro ...

# SSH keys
docker run -it --rm -v ~/.ssh:/home/jovian/.ssh:ro ...

Environment Variables

docker run -it --rm \
  -e AWS_PROFILE=myprofile \
  -e CUDA_VISIBLE_DEVICES=0 \
  ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable

Next Steps