CHƯƠNG 01 · Bắt đầu với Docker•BÀI 02 / 80

Docker Engine, CLI và Registry

Hiểu rõ ai nhận lệnh, ai kéo image và ai chạy container.

Nền tảng◷ 4 phút đọc2/4 trong chương

Nắm bản chất

Docker CLI gửi yêu cầu tới Docker Engine API; daemon quản lý objects, networking, image distribution và container lifecycle. Container runtime phía dưới phối hợp Linux kernel để tạo tiến trình trong các namespaces được cấu hình.

Registry lưu OCI images. Docker Hub, GHCR và ECR là ví dụ. Lệnh docker pull tải image, docker build tạo image mới và docker push xuất bản image lên registry. Khi làm CI/CD, nên quản lý immutable tags và digests để tránh tình huống cùng tag nhưng nội dung đã thay đổi.

Luồng hoạt động

CLI→Docker daemon→containerd/runc

Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?

Lệnh & cấu hình mẫu

docker context ls
docker info --format '{{.ServerVersion}}'
docker pull nginx:stable-alpine
docker image inspect nginx:stable-alpine --format '{{.Id}}'

Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.

Bài tập 10–20 phút

✳

Dùng docker context ls để chắc chắn Docker CLI đang trỏ vào Engine dự kiến. So sánh docker image ls, docker ps -a và docker volume ls: chúng là ba tập resource riêng.

Lỗi dễ mắc

!

Docker socket cho phép điều khiển daemon và thường tương đương quyền rất cao trên host. Không mount /var/run/docker.sock vào container thiếu tin cậy.

Tự kiểm tra

Vì sao một CI job có quyền Docker socket cần được coi là nhạy cảm?Xem đáp án ↗

Vì job có thể yêu cầu daemon tạo containers và mounts với quyền truy cập rộng trên host.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Bài học nền tảng có thể thực hiện trực tiếp bằng các lệnh trên; bảng tra cứu nhanh giúp ôn tập.

→ Mở bảng lệnh tra cứu nhanh
NGUỒN CHÍNH THỨC

Đối chiếu tài liệu gốc

Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.

Mở tài liệu chính thức ↗