0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng Dẫn Chi Tiết Cách Tự Xây Dựng Container Registry Riêng Cho Bạn

Đăng vào 1 tuần trước

• 5 phút đọc

Chủ đề:

Container Registry

Hướng Dẫn Chi Tiết Cách Tự Xây Dựng Container Registry Riêng Cho Bạn

Container Registry là một nền tảng lưu trữ hữu ích cho các nhà phát triển, nơi cho phép bạn đẩy và kéo các container image. Trong thế giới số ngày nay, có rất nhiều registry công khai và riêng tư như Docker Hub, Amazon ECR và Google Cloud Artifact Registry. Tuy nhiên, trong nhiều trường hợp, bạn có thể muốn tự lưu trữ các image của mình để đảm bảo quyền kiểm soát tối đa và sự an toàn cho dữ liệu của bạn.

Bài viết này sẽ cung cấp cho bạn một hướng dẫn chi tiết và thực tiễn từng bước để tự xây dựng Container Registry. Để theo kịp nội dung, bạn nên có một số kiến thức cơ bản về Docker, NGINX và các khái niệm liên quan đến container.

Container Image Là Gì?

Trước khi đi sâu vào Container Registry, chúng ta cần hiểu khái niệm về container image. Một cách đơn giản, container image là một gói chứa tất cả các tệp tin, thư viện và cấu hình cần thiết để chạy một container. Những image này được tổ chức thành các lớp, với mỗi lớp đại diện cho một tập hợp các thay đổi trên hệ thống tệp.

Cách phổ biến nhất để tạo container image là sử dụng Dockerfile:

bash Copy
# Tạo một image
docker build -t pliutau/hello-world:v0 .

# Kiểm tra các image cục bộ
docker images

Khi bạn chạy lệnh trên, một container image mới sẽ được tạo và lưu trữ trên máy cục bộ của bạn. Nhưng nếu bạn muốn chia sẻ image này với người khác hoặc sử dụng nó trên một máy khác? Đó chính là lúc mà Container Registry trở nên cần thiết.

Container Registry Là Gì?

Container Registry là một nền tảng lưu trữ, nơi bạn có thể đẩy và kéo các container image. Các image được tổ chức thành các repository tương tự như các thư mục chứa các file, với chúng có cùng tên. Ví dụ, trên Docker Hub Registry, nginx là tên của repository chứa nhiều version của image NGINX.

Một số registry có tính công khai, có nghĩa rằng bất kỳ ai cũng có thể truy cập và tải về các image trên đó. Các registry công cộng như Docker Hub là lựa chọn tối ưu cho các dự án mã nguồn mở. Trong khi đó, registry riêng tư cung cấp một phương thức để tăng cường bảo mật và quyền riêng tư cho các enterprise, nơi các image được lưu trữ trên đám mây hoặc tại chỗ. Các registry riêng tư thường đi kèm với những tính năng bảo mật nâng cao và hỗ trợ kỹ thuật.

Khi Nào Bạn Nên Tự Xây Dựng Container Registry?

Việc tự xây dựng Container Registry sẽ giúp bạn kiểm soát tốt hơn về cấu hình và cách thức lưu trữ các container image của mình. Đây là một lựa chọn lý tưởng khi bạn muốn giảm sự phụ thuộc vào các nhà cung cấp bên ngoài như AWS hoặc GCP. Đặc biệt, trong những ngành có yêu cầu quản lý chặt chẽ, việc tự lưu trữ trở thành một nhu cầu thiết yếu.

Có nhiều giải pháp container registry mã nguồn mở bạn có thể sử dụng, trong đó giải pháp được Docker hỗ trợ chính thức là registry. Điều này có nghĩa là bạn có thể chạy registry của riêng mình bên trong một container, vô cùng tiện lợi.

Các Bước Để Tự Xây Dựng Container Registry

Để bắt đầu xây dựng Container Registry, bạn sẽ cần thực hiện các bước sau:

Bước 1: Cài Đặt Docker và Docker Compose

Đầu tiên, bạn cần cài đặt Docker và Docker Compose trên máy chủ mà bạn chọn. Bạn có thể sử dụng bất kỳ máy chủ nào hỗ trợ Docker, ví dụ như một DigitalOcean Droplet với hệ điều hành Ubuntu. Sau khi đăng nhập vào máy chủ ảo của bạn, sử dụng lệnh sau để cài đặt Docker:

bash Copy
sudo snap install docker
# Xác minh cài đặt
docker --version
docker-compose --version

Bước 2: Định Cấu Hình và Chạy Container Registry

Tiếp theo, hãy định cấu hình container registry của bạn với tệp compose.yaml. Tệp này sẽ tạo một container registry với volume để lưu trữ các image và một volume để lưu trữ tài liệu mật khẩu:

yaml Copy
services:
  registry:
    image: registry:latest
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - ./registry/registry.password:/auth/registry.password
      - ./registry/data:/data
    ports:
      - 5000

Bạn cũng sẽ cần tạo một tệp mật khẩu bằng lệnh htpasswd để xác thực người dùng.

Bước 3: Chạy NGINX để Xử Lý TLS

Docker Registry yêu cầu một chứng chỉ SSL hợp lệ để hoạt động. Bạn có thể sử dụng Let's Encrypt để lấy chứng chỉ. Hãy đảm bảo rằng bạn có một tên miền trỏ đến máy chủ của bạn.

Bạn cũng sẽ cần thêm dịch vụ NGINX vào tệp compose.yaml và cấu hình tệp nginx.conf để xử lý kết nối SSL:

yaml Copy
services:
  nginx:
    image: nginx:latest
    depends_on:
      - registry
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/certs:/etc/nginx/certs
    ports:
      - "443:443"

Bước 4: Vận Hành Container Registry và NGINX

Sau khi hoàn thành cấu hình, hãy chạy các container registry và NGINX:

bash Copy
docker-compose up

Trên máy khách, bạn có thể đăng nhập vào registry và đẩy hoặc kéo các image:

bash Copy
docker login registry.pliutau.com
# Username: busy
# Password: bee
# Đăng nhập thành công

docker build -t registry.pliutau.com/pliutau/hello-world:v0 .
docker push registry.pliutau.com/pliutau/hello-world:v0

Các Lựa Chọn Khác

Ngoài việc xây dựng registry trên máy chủ, bạn cũng có thể chạy registry trên Kubernetes hoặc sử dụng dịch vụ registry được quản lý như Harbor, một giải pháp mã nguồn mở với các tính năng bảo mật tiên tiến. Nếu bạn muốn có giao diện người dùng cho registry của mình, bạn có thể cân nhắc các dự án như joxit/docker-registry-ui.

Kết Luận

Việc tự xây dựng Container Registry giúp bạn có toàn quyền kiểm soát và tùy chỉnh theo nhu cầu riêng của mình. Bạn đã có tất cả thông tin cần thiết để bắt đầu từ việc cài đặt và cấu hình đến cách sử dụng registry này. Hãy thử nghiệm và lựa chọn giải pháp phù hợp nhất với yêu cầu của bạn. Cảm ơn bạn đã theo dõi hướng dẫn này!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào