Learn how to containerize your applications with Docker
Docker is a platform for developing, shipping, and running applications in containers. Containers are lightweight and contain everything needed to run the software.
# 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
docker --version
Display the Docker version information
docker ps -a
Show all containers (running and stopped)
docker images
Show all Docker images on your system
docker run -d nginx
Run nginx container in detached mode
docker stop container_id
Stop a running container
docker rm container_id
Remove a stopped container
docker pull ubuntu:latest
Download an image from Docker Hub
docker build -t myapp .
Build an image from Dockerfile
docker run -p 8080:80 nginx
Map container port 80 to host port 8080
docker run -v /data:/data nginx
Mount host directory to container
docker logs container_id
View logs from a container
docker restart container_id
Restart a container
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"]
FROM - Base image to start fromWORKDIR - Set working directoryCOPY - Copy files to containerRUN - Execute commands during buildEXPOSE - Document the portCMD - Default command to runENV - Set environment variablesDocker 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 up -d - Start all servicesdocker-compose down - Stop all servicesdocker-compose ps - List servicesdocker-compose logs -f - View logsdocker-compose restart - Restart services# 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
# Run PostgreSQL with environment variables
docker run -d --name postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=mydb -p 5432:5432 postgres
# Run Ghost CMS
docker run -d --name ghost -p 2368:2368 -v ghost content:/var/lib/ghost/content ghost
-d flag to run containers in detached mode (background). Use docker logs -f container_name to view logs.