

Khi sử dụng Docker, các Docker Image cần được lưu trữ ở một nơi để có thể chia sẻ và triển khai trên nhiều môi trường khác nhau. Docker Registry đảm nhận vai trò này, cho phép lưu trữ, quản lý và phân phối container image giữa developer, máy chủ và hệ thống triển khai.
Vậy Docker Registry là gì, hoạt động như thế nào và khác Docker Hub hay Docker Repository ở điểm nào? Hãy cùng tìm hiểu chi tiết trong bài viết dưới đây.
Docker Registry là hệ thống dùng để lưu trữ, quản lý và phân phối Docker Image. Thay vì chỉ lưu image trên máy tính cá nhân, developer có thể đưa image lên Registry và tải xuống trên máy chủ hoặc môi trường khác khi cần.
Registry có thể được triển khai dưới dạng public hoặc private. Docker Hub là một public registry phổ biến và cũng là registry mặc định được Docker sử dụng khi người dùng không chỉ định registry khác.

Chức năng chính của Docker Registry là tạo ra một nơi tập trung để quản lý các container image. Thay vì phải sao chép image thủ công giữa nhiều máy chủ, các hệ thống có thể lấy image trực tiếp từ Registry.
Sau khi ứng dụng được đóng gói thành Docker Image, image có thể được push lên Registry để lưu trữ lâu dài.
Ví dụ một doanh nghiệp có các ứng dụng:
Mỗi ứng dụng có thể được lưu trong một repository riêng bên trong Registry.
Registry giúp chia sẻ image giữa developer, môi trường kiểm thử và hệ thống production.
Developer chỉ cần đưa phiên bản mới lên Registry. Các máy chủ triển khai sau đó tải đúng image về thay vì phải build ứng dụng lại từ đầu.
Docker Registry thường được tích hợp với pipeline CI/CD.
Khi developer cập nhật mã nguồn, hệ thống CI/CD có thể tự động:
Registry vì vậy đóng vai trò như cầu nối giữa quá trình build ứng dụng và triển khai ứng dụng.

Có thể hiểu cách Docker Registry hoạt động thông qua một quy trình đơn giản.
Developer tạo Dockerfile và sử dụng Docker Engine để build ứng dụng thành image.
Ví dụ:
docker build -t myapp:1.0 .Sau bước này, image myapp:1.0 được lưu trên máy local.
Để đưa image lên một Registry cụ thể, developer có thể gắn tag chứa địa chỉ Registry.
Ví dụ:
docker tag myapp:1.0 registry.example.com/myapp:1.0Tên image lúc này cho Docker biết image sẽ được gửi đến registry nào.
Developer thực hiện:
docker push registry.example.com/myapp:1.0Docker sẽ tải các thành phần cần thiết của image lên Registry.
Docker Image được cấu thành từ nhiều layer. Registry lưu trữ và phân phối các nội dung này để client có thể tải image khi cần.
Một máy chủ khác có thể sử dụng:
docker pull registry.example.com/myapp:1.0Docker sẽ tải image tương ứng từ Registry về máy.
Sau khi image đã được tải xuống, hệ thống có thể tạo container:
docker run registry.example.com/myapp:1.0
Nhờ Registry, các môi trường khác nhau có thể sử dụng cùng một phiên bản image, hạn chế tình trạng ứng dụng chạy khác nhau giữa máy developer và server production.
Để hiểu Docker Registry, cần phân biệt một số khái niệm thường xuyên xuất hiện cùng nhau.
Docker Image là mẫu chỉ đọc chứa các thành phần cần thiết để tạo container, chẳng hạn mã nguồn ứng dụng, runtime, thư viện và cấu hình cần thiết.
Image thường được tạo từ Dockerfile.
Repository là tập hợp các container image có liên quan nằm bên trong Registry. Một repository thường đại diện cho một ứng dụng, microservice hoặc project cụ thể.
Ví dụ:
Registry
└── Repository: myapp
├── myapp:1.0
├── myapp:1.1
└── myapp:2.0Tag dùng để xác định các phiên bản khác nhau của image.
Ví dụ:
nginx:1.26
nginx:1.27
nginx:latestTrong đó:
Một Docker Image thường bao gồm nhiều layer. Mỗi layer đại diện cho một thay đổi được tạo ra trong quá trình build image.
Cơ chế layer giúp Docker có thể tái sử dụng những phần không thay đổi, giảm lượng dữ liệu cần tải và tăng hiệu quả khi build hoặc phân phối image.
Docker Registry và Docker Repository có liên quan chặt chẽ nhưng không phải cùng một khái niệm.
Registry là hệ thống chứa và quản lý các container image, trong khi repository là một tập hợp các image liên quan bên trong Registry.
Tiêu chí | Docker Registry | Docker Repository |
| Bản chất | Hệ thống lưu trữ và phân phối image | Khu vực chứa các image liên quan |
| Phạm vi | Có thể chứa nhiều repository | Nằm trong một Registry |
| Nội dung | Repository, image và metadata | Các phiên bản image |
| Ví dụ | Docker Hub | nginx, ubuntu, redis |
Có thể hình dung Registry giống như một kho lớn, còn Repository giống như từng khu vực bên trong kho dành cho một loại ứng dụng cụ thể.
Ví dụ Docker Hub là Registry, trong khi repository nginx chứa các image và tag khác nhau của Nginx.
Đây là hai khái niệm rất dễ bị nhầm lẫn.
Docker Registry là loại hệ thống dùng để lưu trữ và phân phối container image, còn Docker Hub là một dịch vụ Container Registry cụ thể.
Docker Hub cung cấp repository để developer lưu trữ, quản lý và chia sẻ Docker Image, đồng thời hỗ trợ cả repository public và private.
Tiêu chí | Docker Registry | Docker Hub |
| Khái niệm | Hệ thống lưu trữ container image | Một dịch vụ Registry |
| Phạm vi | Khái niệm chung | Sản phẩm cụ thể |
| Public Registry | Có | Có |
| Private Registry | Có | Có |
| Self-hosted | Có thể tự triển khai | Dịch vụ được cung cấp sẵn |
| Ví dụ | Docker Hub, ECR, ACR, Harbor | Docker Hub |
Như vậy có thể hiểu:
Docker Hub là một Docker Registry, nhưng Docker Registry không đồng nghĩa với Docker Hub.
Ngoài Docker Hub, doanh nghiệp có thể sử dụng nhiều Container Registry khác tùy theo hạ tầng và nhu cầu quản lý.
Docker Hub không phải lựa chọn duy nhất. Hiện nay có nhiều nền tảng cung cấp Container Registry.
Docker Hub là registry mặc định trong hệ sinh thái Docker và cung cấp một thư viện lớn container image. Người dùng có thể tạo repository public hoặc private để lưu trữ image.
Amazon ECR là dịch vụ Container Registry được tích hợp với hệ sinh thái AWS, thường được sử dụng khi ứng dụng triển khai trên AWS.
Azure Container Registry cung cấp khả năng lưu trữ và quản lý container image trong hệ sinh thái Microsoft Azure.
Google Artifact Registry hỗ trợ quản lý container image và nhiều loại package khác, phù hợp với workload triển khai trên Google Cloud.
Harbor là nền tảng registry mã nguồn mở thường được sử dụng để triển khai Private Registry trong môi trường doanh nghiệp.
Ngoài ra còn có những lựa chọn như GitLab Container Registry hoặc JFrog Artifactory. Docker cũng liệt kê nhiều giải pháp registry khác nhau để người dùng lựa chọn ngoài Docker Hub.

Một trong những ứng dụng quan trọng nhất của Container Registry là tích hợp với CI/CD.
Khi developer commit code, hệ thống CI có thể tự động build Docker Image và đẩy image lên Registry.
Sau đó hệ thống CD lấy image tương ứng từ Registry để triển khai.
Cách tiếp cận này mang lại một số lợi ích:
Đối với kiến trúc microservices, vai trò của Registry càng quan trọng vì một hệ thống có thể bao gồm hàng chục hoặc hàng trăm container image khác nhau.
Khi làm việc với Registry, developer thường sử dụng bốn nhóm lệnh chính.
Đăng nhập Registry:
docker loginHoặc Registry riêng:
docker login registry.example.comTải Image:
docker pull nginxGắn Tag:
docker tag myapp:1.0 registry.example.com/myapp:1.0Push Image:
docker push registry.example.com/myapp:1.0Các lệnh pull, push và run là những thao tác cơ bản giúp Docker tương tác với registry trong quá trình phân phối và sử dụng image.
Có. Docker Hub là một dịch vụ Container Registry dùng để lưu trữ, quản lý và chia sẻ Docker Image. Tuy nhiên, ngoài Docker Hub còn có nhiều Registry khác như Amazon ECR, Azure Container Registry, Harbor hoặc Google Artifact Registry.
Docker Registry có thể được xem là một dạng Container Registry được sử dụng trong hệ sinh thái container. Thuật ngữ Container Registry có phạm vi rộng hơn và hiện được sử dụng phổ biến để chỉ các nền tảng lưu trữ và phân phối container image.
Không. Registry là hệ thống chứa nhiều repository, còn repository là tập hợp các container image liên quan bên trong Registry.
Có. Doanh nghiệp có thể sử dụng dịch vụ Registry hỗ trợ repository private hoặc tự triển khai Private Registry trong hạ tầng của mình.
Có. Khi triển khai workload, Kubernetes có thể pull container image từ Registry đã được cấu hình. Với private registry, hệ thống cần có thông tin xác thực phù hợp để truy cập image.
Docker Registry là thành phần quan trọng giúp lưu trữ, quản lý và phân phối Docker Image giữa developer, hệ thống CI/CD và các môi trường triển khai. Registry có thể hoạt động dưới dạng public hoặc private tùy theo yêu cầu sử dụng.
Khi tìm hiểu Docker Registry, cần phân biệt rõ ba khái niệm: Registry là hệ thống lưu trữ, Repository là tập hợp các image liên quan nằm trong Registry, còn Docker Hub là một dịch vụ Registry cụ thể.
Khi hệ thống container ngày càng mở rộng, bên cạnh Registry, doanh nghiệp cũng cần một nền tảng hạ tầng có khả năng cung cấp tài nguyên linh hoạt cho Docker, Kubernetes và các ứng dụng cloud-native. VNPT Cloud cung cấp hệ sinh thái hạ tầng điện toán đám mây giúp doanh nghiệp triển khai, vận hành và mở rộng ứng dụng trên môi trường Cloud một cách linh hoạt theo nhu cầu.
