Kiến trúc và vận hành cơ bản của Docker

1. Tổng quan về Docker

Docker là một nền tảng mã nguồn mở cung cấp giải pháp đóng gói ứng dụng vào các container nhẹ. Các container này bao gồm mã nguồn, thư viện và các phụ thuộc cần thiết để ứng dụng chạy độc lập.

Lợi ích chính:

  • Đảm bảo tính nhất quán môi trường chạy
  • Giảm thiểu phức tạp khi cấu hình môi trường
  • Triển khai và phân phối ứng dụng nhanh chóng

2. Công nghệ Linux Container

Container Linux không mô phỏng toàn bộ hệ điều hành mà thực hiện cô lập tiến trình thông qua các không gian tên (namespaces) và nhóm điều khiển (cgroups).

Đặc điểm nổi bật:

- Khởi động nhanh (tính bằng giây)
- Tiêu thụ ít tài nguyên hệ thống
- Kích thước nhỏ gọn

Các công nghệ lõi:

  1. Namespaces: Cô lập tầm nhìn tiến trình
  2. Cgroups: Quản lý và giới hạn tài nguyên vật lý
  3. Hệ thống file UnionFS: Cho phép chia sẻ lớp lưu trữ

3. So sánh Docker và KVM

Tiêu chí Docker KVM
Thời gian khởi động Giây Phút
Kích thước MB GB
Hiệu năng Gần bằng vật lý Giảm do ảo hóa

4. Kiến trúc Docker

4.1 Các thành phần chính

+------------------+       +-------------------+
| Docker Client    | <---> | Docker Daemon     |
+------------------+       +---------+---------+
                                     |
                                     v
                           +---------+---------+
                           | Container Runtime |
                           | (containerd, runc)|
                           +-------------------+

4.2 Chi tiết thành phần

  • Docker Client: Giao diện tương tác qua CLI hoặc API
  • Docker Daemon: Quản lý vòng đời container
  • Container Runtime: containerd và runc quản lý trực tiếp

5. Cài đặt Docker

Trên CentOS/RHEL:

# Cài đặt các gói phụ thuộc
yum install -y yum-utils device-mapper-persistent-data lvm2

# Thêm repository Docker
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# Cài đặt Docker Engine
yum install docker-ce docker-ce-cli containerd.io

# Khởi động dịch vụ
systemctl start docker
systemctl enable docker

Cấu hình mirror tăng tốc:

{
  "registry-mirrors": ["https://mirror.azure.cn"]
}

6. Quản lý Image

Lệnh Mô tả
docker pull Tải image từ registry
docker images Liệt kê image local
docker rmi Xóa image
docker save Lưu image thành file
docker load Nạp image từ file

7. Quản lý Container

# Tạo và chạy container
docker run -d --name my_container nginx

# Xem container đang chạy
docker ps

# Dừng container
docker stop my_container

# Xóa container
docker rm my_container

# Truy cập shell container
docker exec -it my_container bash

8. Mối quan hệ Image-Container

Image là template chỉ đọc, container là instance chạy của image với lớp ghi bổ sung. Một image có thể tạo nhiều container.

Ví dụ commit container thành image:

docker commit -m "Added net-tools" my_container custom_image:v1

9. Kiến trúc lưu trữ phân tầng

Docker sử dụng cơ chế phân tầng (layers) để quản lý image và container:

  • Image: Gồm nhiều lớp chỉ đọc
  • Container: Thêm lớp ghi trên cùng
  • UnionFS: Kết hợp các lớp thành view thống nhất
# Kiểm tra các lớp image
docker image inspect nginx --format='{{.RootFS.Layers}}'

Thẻ: docker container linux-container image-management Container-Orchestration

Đăng vào ngày 18 tháng 8 lúc 16:10