Chuyển đến nội dung chính

Bài 2: Cài đặt Docker và Các lệnh Cơ bản

Hướng dẫn cài đặt Docker Engine trên Ubuntu, CentOS, macOS và Windows. Làm quen với Docker CLI, các lệnh cơ bản như docker run, ps, stop, rm, exec, logs. Cấu hình Docker daemon và quản lý Docker service.

🔒 DevSecOps — Bài 2 Bài 2: Cài đặt Docker và Các lệnh Cơ bản

Docker từ Cơ bản đến Nâng cao

Phần 1: Nền tảng Docker

xdev.asia

1. Cài đặt Docker trên Ubuntu 24.04

Ubuntu là platform phổ biến nhất để chạy Docker Engine trong production.

Bước 1: Gỡ các phiên bản cũ

# Gỡ các packages Docker cũ (nếu có)
sudo apt-get remove docker docker-engine docker.io containerd runc

Cleanup

sudo apt-get autoremove -y

Bước 2: Cài đặt prerequisites

# Update package index
sudo apt-get update

Cài đặt các packages cần thiết

sudo apt-get install -y
ca-certificates
curl
gnupg
lsb-release

Bước 3: Thêm Docker GPG key và repository

# Thêm Docker official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Thêm Docker repository

echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/ubuntu
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Bước 4: Cài đặt Docker Engine

# Update package index
sudo apt-get update

Cài đặt Docker Engine, CLI, containerd, và plugins

sudo apt-get install -y
docker-ce
docker-ce-cli
containerd.io
docker-buildx-plugin
docker-compose-plugin

Bước 5: Post-installation

# Thêm user vào docker group (không cần sudo)
sudo usermod -aG docker $USER

Apply group changes (hoặc logout/login)

newgrp docker

Verify cài đặt thành công

docker run hello-world

2. Cài đặt Docker trên CentOS/RHEL

# Cài đặt yum-utils
sudo yum install -y yum-utils

Thêm Docker repository

sudo yum-config-manager --add-repo
https://download.docker.com/linux/centos/docker-ce.repo

Cài đặt Docker Engine

sudo yum install -y docker-ce docker-ce-cli containerd.io
docker-buildx-plugin docker-compose-plugin

Khởi động Docker

sudo systemctl start docker sudo systemctl enable docker

Thêm user vào docker group

sudo usermod -aG docker $USER

3. Cài đặt Docker Desktop (macOS/Windows)

Trên macOS và Windows, sử dụng Docker Desktop:

  • macOS: Tải từ docker.com, kéo vào Applications, hoặc dùng brew install --cask docker

  • Windows: Tải Docker Desktop installer, cần WSL 2 backend (Windows 10/11)

4. Cấu hình Docker Daemon

File cấu hình daemon nằm ở /etc/docker/daemon.json:

{
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "default-address-pools": [
    {"base": "172.80.0.0/16", "size": 24}
  ],
  "dns": ["8.8.8.8", "8.8.4.4"],
  "live-restore": true,
  "userland-proxy": false
}
# Sau khi thay đổi daemon.json, restart Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

5. Docker CLI Cơ bản

5.1. docker run - Chạy container

# Chạy container đơn giản
docker run hello-world

Chạy container interactive (vào shell)

docker run -it ubuntu bash

Chạy container ở background (detached mode)

docker run -d --name my-nginx -p 8080:80 nginx

Chạy với environment variables

docker run -d --name my-db
-e POSTGRES_PASSWORD=mysecretpassword
-e POSTGRES_DB=myapp
-p 5432:5432
postgres:16

Chạy với volume mount

docker run -d --name my-app
-v /host/path:/container/path
-p 3000:3000
node:20-alpine

5.2. Quản lý containers

# Liệt kê containers đang chạy
docker ps

Liệt kê tất cả containers (kể cả stopped)

docker ps -a

Dừng container

docker stop my-nginx

Khởi động lại container

docker start my-nginx

Restart container

docker restart my-nginx

Xóa container (phải stop trước)

docker rm my-nginx

Force xóa container đang chạy

docker rm -f my-nginx

Xóa tất cả stopped containers

docker container prune

5.3. Tương tác với container

# Exec - chạy lệnh trong container đang chạy
docker exec -it my-nginx bash
docker exec my-nginx cat /etc/nginx/nginx.conf

Xem logs

docker logs my-nginx docker logs -f my-nginx # Follow logs (real-time) docker logs --tail 100 my-nginx # 100 dòng cuối docker logs --since 1h my-nginx # Logs trong 1 giờ qua

Copy files giữa host và container

docker cp myfile.txt my-nginx:/tmp/ docker cp my-nginx:/etc/nginx/nginx.conf ./

Xem chi tiết container

docker inspect my-nginx

Xem resource usage

docker stats docker stats my-nginx

6. Docker System Commands

# Thông tin hệ thống Docker
docker info

Phiên bản Docker

docker version

Disk usage

docker system df docker system df -v # Chi tiết

Cleanup toàn bộ unused resources

docker system prune # Containers, networks, images (dangling) docker system prune -a # Bao gồm cả unused images docker system prune --volumes # Bao gồm cả volumes

7. Thực hành

Hãy thử các bài tập sau để làm quen với Docker:

  1. Chạy một Nginx container, truy cập qua browser tại http://localhost:8080

  2. Chạy một PostgreSQL container với custom password

  3. Exec vào container và kiểm tra các processes bên trong

  4. Xem logs và stats của containers

  5. Dọn dẹp tất cả containers và images

8. Tổng kết

Trong bài này, bạn đã học được:

  • Cài đặt Docker Engine trên các hệ điều hành phổ biến

  • Cấu hình Docker daemon với daemon.json

  • Các lệnh cơ bản: run, ps, stop, rm, exec, logs

  • Interactive vs Detached mode

  • Docker system commands để quản lý resources

Bài tiếp theo sẽ đi sâu vào Docker Images - cách build, pull và quản lý images hiệu quả.