Back to Home

🐳 Docker Basics

Learn how to containerize your applications with Docker

What is Docker?

Docker is a platform for developing, shipping, and running applications in containers. Containers are lightweight and contain everything needed to run the software.

💡 Key Benefit: Docker allows you to package an application with all of its dependencies into a standardized unit for software development.

Installing Docker

On Ubuntu/Debian:

# Update package index sudo apt update # Install dependencies sudo apt install -y apt-transport-https ca-certificates curl software-properties-common # Add Docker GPG key curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # Add Docker repository echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io # Start and enable Docker sudo systemctl start docker sudo systemctl enable docker

Essential Docker Commands

🔍 Check Docker Version

docker --version

Display the Docker version information

📋 List Containers

docker ps -a

Show all containers (running and stopped)

🖼️ List Images

docker images

Show all Docker images on your system

▶️ Run a Container

docker run -d nginx

Run nginx container in detached mode

🛑 Stop Container

docker stop container_id

Stop a running container

🗑️ Remove Container

docker rm container_id

Remove a stopped container

📥 Pull Image

docker pull ubuntu:latest

Download an image from Docker Hub

🔨 Build Image

docker build -t myapp .

Build an image from Dockerfile

🌐 Map Ports

docker run -p 8080:80 nginx

Map container port 80 to host port 8080

📁 Mount Volume

docker run -v /data:/data nginx

Mount host directory to container

📝 View Logs

docker logs container_id

View logs from a container

🔄 Restart Container

docker restart container_id

Restart a container

Creating a Dockerfile

A Dockerfile is a script that contains instructions to build a Docker image.

# Use official Node.js image as base FROM node:18-alpine # Set working directory WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm install # Copy application files COPY . . # Expose port EXPOSE 3000 # Define startup command CMD ["node", "index.js"]

Dockerfile Instructions:

Docker Compose

Docker Compose is a tool for defining and running multi-container Docker applications.

version: '3.8' services: web: build: . ports: - "3000:3000" volumes: - .:/app" environment: - NODE_ENV=development" redis: image: "redis:alpine" ports: - "6379:6379"

Docker Compose Commands:

Common Docker Use Cases

Running a Web Server (Nginx)

# Run nginx with port mapping and volume mount docker run -d -p 8080:80 --name mynginx -v /var/www/html:/usr/share/nginx/html nginx

Running a Database (PostgreSQL)

# Run PostgreSQL with environment variables docker run -d --name postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=mydb -p 5432:5432 postgres

Running a Ghost Blog

# Run Ghost CMS docker run -d --name ghost -p 2368:2368 -v ghost content:/var/lib/ghost/content ghost
💡 Pro Tip: Always use -d flag to run containers in detached mode (background). Use docker logs -f container_name to view logs.