Before containerization, deploying applications across developer laptops, staging servers, and cloud environments often resulted in broken dependencies, operating system conflicts, and missing configuration files. Docker solves this by packaging an application together with its entire runtime environment into an immutable, lightweight container.
1. Containers vs. Virtual Machines (VMs)
| Feature | Virtual Machines (VMware/VirtualBox) | Docker Containers |
|---|---|---|
| Operating System | Includes full Guest OS per virtual machine (Gigabytes in size). | Shares Host OS kernel (Megabytes in size). |
| Startup Speed | Boots up in minutes. | Starts up instantly in milliseconds. |
| Resource Usage | High RAM/CPU allocation. | Ultra-lightweight resource footprint. |
2. Writing Production Multi-Stage Dockerfiles
A multi-stage build separates the build environment from the final runtime container, drastically reducing final image size (e.g., from 1GB down to 50MB).
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Production Execution Phase
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
3. Orchestrating Multi-Container Services with Docker Compose
Real-world applications require multiple components (e.g., Node.js Web API + PostgreSQL Database + Redis Cache). docker-compose.yml connects them seamlessly into a single network.
services:
web:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://postgres:secret@db:5432/myapp
depends_on:
- db
db:
image: postgres:16-alpine
environment:
- POSTGRES_PASSWORD=secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
4. Essential Docker CLI Commands
docker build -t my-app:v1 .
# Run container in background (detached mode) on port 8080
docker run -d -p 8080:80 --name running-app my-app:v1
# View active running containers
docker ps
# Stop & start docker-compose services
docker-compose up -d
docker-compose down
Learn Cloud & DevOps in Telugu!
Master Docker, Kubernetes, AWS, and CI/CD automation with real hands-on cloud labs at Telugu IT Tutorials. Join DevOps Cohort →