Docker & Containers: Beginner's Blog Tutorial
Docker & Containers

Docker & Containers: Beginner's Blog Tutorial

27 January 202636 min read7073 words
Tags#Docker & Containers

Docker & Containers: Beginner's Blog Tutorial


Containers package apps with their dependencies for consistent deployment anywhere. Docker is the #1 container platform used by 13M+ developers.

This tutorial builds from "hello world" to a production-ready web app + database stack.

Why Docker in 2026?

  • Consistency: Same app behavior on laptop, server, cloud

  • Speed: Containers start in milliseconds vs. VM minutes

  • Scale: Run 100s of microservices efficiently

  • Jobs: Docker skills boost resumes 40% (LinkedIn data)

Quick Setup (3 Minutes)

Windows/Mac: Download Docker Desktop from docker.com
Linux:

bash
curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER # Logout/login

Verify: docker --version + docker run hello-world

Docker Basics: Images vs Containers

ConceptWhat It IsAnalogy
ImageApp + dependencies blueprintRecipe
ContainerRunning instance of imageCooked meal
DockerfileInstructions to build imageRecipe card

First container:

bash
docker run -d -p 80:80 nginx

Visit localhost → Nginx welcome page running!

Write Your First Dockerfile

Create a simple Node.js app:

package.json:

json
{"name": "docker-demo", "version": "1.0.0", "dependencies": {"express": "^4.18.0"}}

app.js:

javascript
const express = require('express'); const app = express(); app.get('/', (req, res) => res.send('Hello Docker!')); app.listen(3000, () => console.log('Running on port 3000'));

Dockerfile:

text
FROM node:22-alpine # Lightweight base image WORKDIR /app # Set working directory COPY package*.json ./ # Copy package files RUN npm install # Install dependencies COPY . . # Copy source code EXPOSE 3000 # Document port CMD ["node", "app.js"] # Default command

Build & run:

bash
docker build -t my-node-app . docker run -p 3000:3000 my-node-app

localhost:3000 shows "Hello Docker!"

Essential Docker Commands

bash
docker ps # List running containers docker ps -a # All containers docker stop <container> # Stop container docker rm <container> # Remove container docker images # List images docker rmi <image> # Remove image docker logs <container> # View logs

Clean everything:

bash
docker rm -f $(docker ps -aq) # Remove all containers docker rmi -f $(docker images -aq) # Remove all images

Persistent Data with Volumes

Containers lose data when stopped. Volumes persist it.

bash
# Create named volume docker volume create mydata # Run with volume docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=pass -v mydata:/var/lib/postgresql/data postgres

List volumes: docker volume ls

Docker Compose: Multi-Container Apps

Real apps need web server + database. Docker Compose orchestrates them.

docker-compose.yml:

text
services: web: build: . ports: - "3000:3000" depends_on: - db environment: - DB_HOST=db db: image: postgres:15 environment: - POSTGRES_DB=app - POSTGRES_USER=user - POSTGRES_PASSWORD=pass volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data:

Run everything:

bash
docker compose up --build

Now you have web (localhost:3000) + database connected!

Production Deployment

Push to Docker Hub:

bash
docker tag my-node-app yourusername/my-node-app docker push yourusername/my-node-app

Deploy to Render/DigitalOcean:

  1. Connect GitHub repo with Dockerfile

  2. Auto-builds on push

  3. Zero-config deployment

Project: Full-Stack Todo App

Complete docker-compose.yml:

text
services: frontend: image: nginx:alpine ports: - "80:80" volumes: - ./dist:/usr/share/nginx/html # React build backend: build: ./backend ports: - "3001:3001" environment: - DATABASE_URL=postgresql://user:pass@db:5432/todos db: image: postgres:15 environment: POSTGRES_DB: todos POSTGRES_USER: user POSTGRES_PASSWORD: pass redis: image: redis:alpine

One command runs everything: docker compose up -d

Common Errors & Solutions

ErrorFix
port already allocateddocker ps → docker stop <container>
no space leftdocker system prune -a
permission deniedsudo chown -R $USER ~/.docker
image pull failedCheck internet + Docker Hub login

Docker Cheat Sheet

bash
# Daily workflow docker compose up -d # Start stack docker compose logs -f web # Follow web logs docker compose down # Stop everything # Debug docker exec -it <container> sh # Shell access docker stats # Resource usage

Next Steps

  1. Convert existing project: Add Dockerfile to your repo

  2. CI/CD: GitHub Actions auto-deploy

  3. Kubernetes: Scale to 1000s of containers

  4. Challenge: Dockerize your current app, share link!

Starter repo: GitHub search "docker-compose fullstack example"

Containers unlock DevOps superpowers. Bookmark, practice daily, deploy weekly. Share your first containerized app URL below! 🚢

Comments

No comments yet. Be the first to share your thoughts.

Docker Containers Tutorial for Beginners 2026: Deploy Apps i