Docker for AI apps
Introduction
"My machine la work aagudhu, unga machine la yenda work aagala?" โ Developer life oda biggest problem! ๐ค
AI apps ku idhu worse โ TensorFlow version mismatch, CUDA driver issues, Python package conflicts. Oru developer machine la train aagura model vera developer machine la load aagaadhu.
Docker indha problem completely solve pannum! Unga app, dependencies, model โ ellam oru container la pack panniduveenga. Enga run pannaalum same result! ๐ณ
Indha article la Docker basics, AI-specific Dockerfiles, multi-stage builds, GPU containers โ ellam paapom! ๐ฆ
Docker Core Concepts
Docker la 4 key concepts:
1. Image ๐ธ
- Container oda blueprint/template
- Read-only
- Dockerfile la irundhu build aagum
- Example: python:3.11-slim, nvidia/cuda:12.0
2. Container ๐ฆ
- Image oda running instance
- Isolated environment
- Start, stop, delete pannalam
- Multiple containers from same image
3. Dockerfile ๐
- Image build panna instructions
- Step-by-step recipe
- FROM, RUN, COPY, CMD commands
4. Registry ๐ช
- Images store pannra place
- Docker Hub (public, free)
- ECR (AWS), GCR (Google), ACR (Azure)
Analogy ๐ฐ:
- Dockerfile = Recipe
- Image = Frozen cake (ready to use)
- Container = Cake cut panni serve pannradhu
- Registry = Bakery shop (cakes store)
Docker Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ DOCKER ARCHITECTURE โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ Docker Host (Your Machine) โ โ โ โ โ โ โ โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ โ โ โ โContainerโ โContainerโ โContainerโ โ โ โ โ โ AI App โ โ Redis โ โPostgres โ โ โ โ โ โ + Model โ โ Cache โ โ DB โ โ โ โ โ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โ โ โ โ โโโโโโโโโโโโโผโโโโโโโโโโโโ โ โ โ โ โโโโโโโโผโโโโโโโ โ โ โ โ โDocker Engineโ โ โ โ โ โโโโโโโโฌโโโโโโโ โ โ โ โ โโโโโโโโผโโโโโโโ โ โ โ โ โ Host OS โ โ โ โ โ โ (Linux) โ โ โ โ โ โโโโโโโโโโโโโโโ โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ โ vs Virtual Machine: โ โ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โ โ โ App โ โ App โ โ App โ โ โ โ Guest โ โ Guest โ โ Guest โ โ Full OS โ โ โ OS โ โ OS โ โ OS โ each! โ โ โโโโโฌโโโโโ โโโโโฌโโโโโ โโโโโฌโโโโโ โ โ โโโโโโโโโโโโผโโโโโโโโโโโ โ โ Hypervisor (VMware/KVM) โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
AI App Dockerfile โ Step by Step
Complete Dockerfile for AI inference app:
Key tip: requirements.txt COPY first, then code. Dependencies change aagama iruntha cached layer use aagum โ build fast! โก
Multi-Stage Builds (Smaller Images)
AI Docker images romba perusa aagum โ 5GB+! Multi-stage builds use pannina size 50-70% reduce aagum:
Size comparison:
| Approach | Image Size |
|---|---|
| Single stage (python:3.11) | 3.5 GB |
| Single stage (slim) | 2.1 GB |
| Multi-stage (slim) | 1.2 GB |
| Multi-stage + .dockerignore | 800 MB |
Always use multi-stage for production AI apps! Storage cost um reduce aagum, deploy um fast aagum. ๐ฆ
GPU Support in Docker
AI model inference ku GPU venum na Docker la um GPU use pannalam!
Prerequisites:
- NVIDIA GPU installed
- NVIDIA Container Toolkit installed
- Docker 19.03+
GPU Dockerfile:
Run with GPU:
Verify GPU inside container:
Common CUDA images:
| Base Image | Size | Use |
|---|---|---|
| nvidia/cuda:12.0-base | 200MB | Runtime only |
| nvidia/cuda:12.0-runtime | 1.5GB | + CUDA runtime |
| nvidia/cuda:12.0-devel | 3.5GB | + compilation tools |
Docker Compose for AI Stack
Multiple containers manage panna Docker Compose use pannunga:
One command la entire stack up:
AI app + Redis cache + PostgreSQL โ full stack 30 seconds la up! ๐
Docker Optimization for AI
AI Docker images optimize panna tips:
1. .dockerignore file ๐
2. Layer caching strategy ๐ฆ
- Rarely changing layers first (OS, system deps)
- Dependencies next (requirements.txt)
- Code last (changes most often)
3. Slim base images ๐๏ธ
- python:3.11 โ 1.0GB
- python:3.11-slim โ 150MB
- python:3.11-alpine โ 60MB (compatibility issues possible)
4. Model optimization ๐ง
- ONNX format use pannunga (smaller, faster)
- Quantized models use pannunga (INT8)
- Model weights separate volume la mount pannunga
5. Multi-stage builds ๐๏ธ
- Build dependencies final image la include aagaadhu
- Compiler, dev tools โ build stage la mattum
Result: 5GB image โ 800MB image. Deploy 6x faster! โก
Common Docker Issues (AI Apps)
AI apps la common Docker issues & solutions:
โ ๏ธ Issue: Image too large (5GB+)
โ Multi-stage build, slim base, .dockerignore
โ ๏ธ Issue: Build takes 30+ minutes
โ Layer caching optimize, requirements.txt separate COPY
โ ๏ธ Issue: Out of memory (OOM killed)
โ Docker memory limit increase: docker run -m 4g
โ ๏ธ Issue: GPU not detected
โ nvidia-container-toolkit install, --gpus all flag
โ ๏ธ Issue: Model file not found
โ COPY path check, or volume mount use
โ ๏ธ Issue: Permission denied
โ RUN chown or USER directive add
โ ๏ธ Issue: Slow inference in container
โ CPU cores limit check, OMP_NUM_THREADS set
Essential Docker Commands
Daily use pannra Docker commands:
| Command | Purpose |
|---|---|
| `docker build -t name .` | Image build |
| `docker run -p 8080:8080 name` | Container start |
| `docker ps` | Running containers list |
| `docker logs container_id` | View logs |
| `docker exec -it container bash` | Shell access |
| `docker stop container_id` | Stop container |
| `docker images` | List images |
| `docker rmi image_id` | Delete image |
| `docker system prune -a` | Cleanup everything |
| `docker compose up -d` | Start all services |
| `docker compose down` | Stop all services |
| `docker stats` | Resource usage monitor |
Pro tip: docker system prune -a regularly run pannunga โ unused images, containers disk space eat pannudum! ๐งน
Prompt: Docker Setup
โ Key Takeaways
โ Docker Solves Reproducibility โ App + dependencies package. Same image enga run pannaalum consistent result. "Works on my machine" forever solve
โ Dockerfile Concepts โ Image (blueprint), Container (running instance), Layer (caching). FROM slim base, COPY dependencies first, code last (caching efficiency)
โ Multi-Stage Builds โ Build stage (install everything) + runtime stage (only needed). 5GB image โ 800MB possible. AI apps mandatory for large models
โ Optimization Techniques โ .dockerignore (unnecessary files exclude), layer caching strategy, slim base images, non-root user (security), health checks
โ GPU in Docker โ nvidia/cuda base image, nvidia-container-toolkit install, --gpus all flag. Model inference GPU-accelerated containers possible
โ Docker Compose โ Multiple containers (app, Redis, database) single YAML file. Local development perfect; production Kubernetes recommended
โ Common Issues โ Image too large (multi-stage), build slow (cache), OOM killed (memory limit), GPU not detected (toolkit), model missing (volume mount)
โ AI App Pattern โ Python:slim base, requirements.txt separate COPY (caching), app code last, ONNX models volume mount, health endpoint, proper signals handling
๐ ๐ฎ Mini Challenge
Challenge: Containerize an AI App (HuggingFace Model)
Real Docker practice โ sentiment analysis model containerize pannu:
Step 1: Python App Create Pannunga ๐
Step 2: Requirements Create Pannunga ๐
Step 3: Dockerfile Write Pannunga ๐ณ
Step 4: Build & Run Locally ๐
Step 5: Push to Docker Hub ๐ฆ
Step 6: Run from Registry ๐
Completion Time: 90 minutes
Key Skills: Docker build, tagging, pushing, running
Real-world project โญ
๐ผ Interview Questions
Q1: Docker vs Virtual Machine โ difference? When use?
A: VM = full OS (heavy, slow). Docker = lightweight container (fast, efficient). Docker: modern applications, microservices, CI/CD. VM: legacy apps, full OS needed, security isolation critical. AI apps: Docker perfect โ quick deployment, reproducible.
Q2: Docker image size large issue โ optimization?
A: Use slim/alpine base images. Multi-stage build (build stage, runtime stage). Remove unnecessary packages. .dockerignore use (large files exclude). Model caching (separate layer). Tool: docker-slim (automatic optimization). Large models: volume mount kara, image la store panna vendaam.
Q3: Docker security concerns โ best practices?
A: Scan images (vulnerabilities). Don't run as root. Read-only filesystem. Secrets management (environment variables, not hardcoded). Registry authentication. Regular updates. Minimal images (less attack surface). Private registries for sensitive models.
Q4: Docker volume vs bind mount โ AI apps la which use?
A: Volume = Docker-managed, portable, consistent. Bind mount = host directory directly mount. AI apps: models (volume, persistent), code (bind mount, local dev). Production: volumes recommended. Development: bind mounts faster iteration.
Q5: Multi-GPU Docker setup โ how?
A: ```bash
# Dockerfile
FROM nvidia/cuda:12.0-runtime
# Rest setup same
Frequently Asked Questions
Docker la multi-stage build use pannra main reason enna?