Docker là nền tảng container hóa giúp đóng gói ứng dụng cùng toàn bộ phụ thuộc vào một môi trường chạy độc lập, dễ dàng triển khai trên mọi hệ thống hỗ trợ.
Các thành phần cốt lõi
- Container: Môi trường chạy cô lập chứa ứng dụng và thư viện cần thiết.
- Image: Bản mẫu dùng để tạo container, bao gồm hệ điều hành, mã nguồn và cấu hình.
- Docker Engine: Trình quản lý chịu trách nhiệm khởi tạo, giám sát và hủy các container.
Lệnh Docker thông dụng theo chức năng
Quản lý image
docker image ls # Liệt kê image hiện có
docker pull redis:alpine # Tải image Redis từ registry
# Dockerfile mẫu cho ứng dụng Node.js
FROM node:18-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
CMD ["node", "server.js"]
docker build -t node-app:v1 . # Xây dựng image từ Dockerfile
Quản lý container
docker run -d --name webapp -p 8080:3000 node-app:v1 # Chạy container nền
docker container ls # Xem container đang hoạt động
docker exec -it webapp sh # Truy cập shell trong container
docker stop webapp && docker rm webapp # Dừng và xóa container
Quản lý mạng
docker network create app-net # Tạo mạng riêng
docker network connect app-net webapp # Gắn container vào mạng
Quản lý dữ liệu
docker volume create app-data # Tạo volume lưu trữ
docker run -v app-data:/var/lib/data node-app:v1 # Mount volume vào container
Ứng dụng thực tiễn
Chuẩn hóa môi trường phát triển
Sử dụng Dockerfile để định nghĩa môi trường Python/Node.js/Golang, đảm bảo mọi thành viên trong team có cùng phiên bản công cụ và thư viện mà không phụ thuộc vào hệ điều hành cá nhân.
Triển khai hệ thống microservice
Mỗi service (API, database, message queue) chạy trong container riêng, kết nối qua mạng Docker do Compose định nghĩa. Ví dụ: PostgreSQL + Redis + Express API + React frontend.
Tích hợp vào pipeline CI/CD
Dùng image như môi trường chuẩn để chạy test unit, build artifact, deploy lên staging/production — loại bỏ sự khác biệt giữa các môi trường.
Quản lý cấu hình linh hoạt
Truyền biến môi trường (ENV) khi khởi chạy container để thay đổi endpoint, secret key hay mức log mà không cần rebuild image hay sửa code.