Docker Engine, CLI và Registry
Hiểu rõ ai nhận lệnh, ai kéo image và ai chạy container.
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
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.
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Đố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 ↗