Khóa học docker

Private Registries trong Docker

0 phút đọc

Docker là một nền tảng mã nguồn mở giúp đơn giản hóa quá trình phát triển, triển khai và chạy các ứng dụng bằng cách sử dụng các container. Một trong những tính năng quan trọng của Docker là khả năng lưu trữ và quản lý các Docker images thông qua các registries. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về private registries trong Docker, cách thiết lập và sử dụng chúng, và cung cấp các ví dụ cụ thể để minh họa.

Tổng Quan Về Docker Registry

Docker registry là một kho lưu trữ nơi bạn có thể lưu trữ các Docker images và chia sẻ chúng với người khác. Docker registry có thể được tổ chức thành các Docker repositories, và trong mỗi repository, bạn có thể duy trì các phiên bản cụ thể của một Docker image.

Public và Private Docker Registries

Docker cung cấp hai loại registries chính:

  1. Public Registries: Các public registries như Docker Hub cho phép bất kỳ ai cũng có thể truy cập và sử dụng các Docker images được lưu trữ ở đó. Điều này rất hữu ích cho việc chia sẻ các images với cộng đồng, nhưng không phù hợp cho các ứng dụng chứa mã nguồn hoặc dữ liệu nhạy cảm.
  2. Private Registries: Các private registries cho phép bạn lưu trữ các Docker images trong một môi trường riêng tư, chỉ có những người được ủy quyền mới có thể truy cập. Điều này rất quan trọng cho các doanh nghiệp và các dự án yêu cầu bảo mật cao.

Lợi Ích Của Private Docker Registries

  1. Bảo Mật: Private registries giúp bảo vệ mã nguồn và dữ liệu nhạy cảm bằng cách giới hạn quyền truy cập.
  2. Kiểm Soát: Bạn có toàn quyền kiểm soát các Docker images, bao gồm việc quản lý phiên bản và cấu hình.
  3. Hiệu Suất: Giảm thời gian tải xuống và tăng tốc độ triển khai bằng cách lưu trữ các images gần với môi trường triển khai.
  4. Tùy Chỉnh: Cho phép tùy chỉnh các thiết lập như xác thực, cân bằng tải và ghi log.

Thiết Lập Private Docker Registry

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

Trước khi thiết lập private registry, bạn cần cài đặt Docker trên máy chủ của mình. Bạn có thể tham khảo tài liệu chính thức của Docker để biết cách cài đặt Docker trên các hệ điều hành khác nhau.

Bước 2: Cấu Hình Docker Daemon

Trước khi chạy private registry, bạn cần cấu hình Docker daemon để chấp nhận các kết nối không an toàn (insecure connections) nếu bạn không sử dụng SSL.

Thêm cấu hình sau vào file daemon.json (thường nằm ở /etc/docker/daemon.json trên Linux hoặc C:\ProgramData\Docker\config\daemon.json trên Windows):

json Copy
{
  "insecure-registries": ["localhost:5000"]
}

Sau đó, tải lại Docker daemon và khởi động lại dịch vụ Docker:

bash Copy
sudo systemctl daemon-reload
sudo systemctl restart docker

Bước 3: Chạy Private Docker Registry

Sử dụng lệnh sau để kéo image của Docker registry từ Docker Hub và chạy nó trên port 5000:

bash Copy
docker run -d -p 5000:5000 --name localregistry registry:2

Lệnh này sẽ khởi động một container registry trên localhost port 5000.

Bước 4: Kiểm Tra Trạng Thái Container

Sử dụng lệnh docker ps để kiểm tra trạng thái của container registry:

bash Copy
docker ps

Bạn sẽ thấy container registry đang chạy với thông tin về port và tên container.

Sử Dụng Private Docker Registry

Đẩy Docker Image Lên Private Registry

  1. Kéo Image Từ Docker Hub

    Trước tiên, kéo một Docker image từ Docker Hub. Ví dụ, kéo image của Ubuntu:

    bash Copy
    docker pull ubuntu:18.04
  2. Tag Image

    Tag image để chuẩn bị đẩy lên private registry:

    bash Copy
    docker tag ubuntu:18.04 localhost:5000/ubuntu:18.04
  3. Đẩy Image Lên Private Registry

    Sử dụng lệnh docker push để đẩy image lên private registry:

    bash Copy
    docker push localhost:5000/ubuntu:18.04

Kéo Docker Image Từ Private Registry

Sử dụng lệnh docker pull để kéo image từ private registry:

bash Copy
docker pull localhost:5000/ubuntu:18.04

Quản Lý Private Docker Registry

Liệt Kê Các Images Trong Private Registry

Sử dụng lệnh curl để liệt kê các repositories trong private registry:

bash Copy
curl http://localhost:5000/v2/_catalog

Kết quả sẽ trả về danh sách các repositories có trong private registry.

Liệt Kê Các Tags Của Một Image

Sử dụng lệnh curl để liệt kê các tags của một image cụ thể:

bash Copy
curl http://localhost:5000/v2/ubuntu/tags/list

Kết quả sẽ trả về danh sách các tags của image ubuntu.

Ví Dụ: Tạo và Sử Dụng Private Docker Registry

Trong ví dụ này, chúng ta sẽ tạo và sử dụng một private Docker registry để lưu trữ và quản lý các Docker images.

  1. Tạo Dockerfile

    Tạo một file có tên là Dockerfile với nội dung sau:

    Dockerfile Copy
    # Sử dụng image chính thức của Node.js làm base image
    FROM node:14
    
    # Tạo thư mục làm việc trong container
    WORKDIR /app
    
    # Sao chép package.json và package-lock.json vào thư mục làm việc
    COPY package*.json ./
    
    # Cài đặt các phụ thuộc của ứng dụng
    RUN npm install
    
    # Sao chép mã nguồn ứng dụng vào thư mục làm việc
    COPY . .
    
    # Mở cổng 8080 để truy cập ứng dụng
    EXPOSE 8080
    
    # Chạy ứng dụng khi container khởi động
    CMD ["node", "app.js"]
  2. Tạo file package.json

    Tạo một file có tên là package.json với nội dung sau:

    json Copy
    {
      "name": "docker-example",
      "version": "1.0.0",
      "description": "A simple web application",
      "main": "app.js",
      "scripts": {
        "start": "node app.js"
      },
      "dependencies": {
        "express": "^4.17.1"
      }
    }
  3. Tạo file app.js

    Tạo một file có tên là app.js với nội dung sau:

    javascript Copy
    const express = require("express");
    const app = express();
    const port = 8080;
    
    app.get("/", (req, res) => {
      res.send("Hello, Docker Private Registry!");
    });
    
    app.listen(port, () => {
      console.log(`App running at http://localhost:${port}`);
    });
  4. Xây Dựng Docker Image

    Sử dụng lệnh docker build để xây dựng Docker image từ Dockerfile:

    bash Copy
    docker build -t docker-example .
  5. Tag Docker Image

    Tag image để chuẩn bị đẩy lên private registry:

    bash Copy
    docker tag docker-example localhost:5000/docker-example
  6. Đẩy Docker Image Lên Private Registry

    Sử dụng lệnh docker push để đẩy image lên private registry:

    bash Copy
    docker push localhost:5000/docker-example
  7. Kéo Docker Image Từ Private Registry

    Sử dụng lệnh docker pull để kéo image từ private registry:

    bash Copy
    docker pull localhost:5000/docker-example
  8. Chạy Docker Container Từ Private Registry

    Sử dụng lệnh docker run để tạo và chạy một container từ Docker image vừa kéo:

    bash Copy
    docker run -d -p 8080:8080 --name my-docker-app localhost:5000/docker-example
  9. Truy Cập Ứng Dụng

    Mở trình duyệt web và truy cập http://localhost:8080. Bạn sẽ thấy thông báo "Hello, Docker Private Registry!".

Kết Luận

Private registries trong Docker là một công cụ mạnh mẽ giúp đơn giản hóa quá trình lưu trữ, quản lý và chia sẻ các Docker images trong một môi trường bảo mật. Bằng cách sử dụng private registries, các nhà phát triển có thể đảm bảo rằng ứng dụng của họ sẽ hoạt động nhất quán và an toàn trên nhiều môi trường khác nhau. Việc thiết lập và quản lý private registries khá đơn giản và có thể thực hiện thông qua một vài bước cơ bản. Bằng cách tận dụng các tính năng của private registries, các nhà phát triển và doanh nghiệp có thể nâng cao hiệu quả và chất lượng của quy trình phát triển phần mềm.

Avatar
Được viết bởi

Admin Team

Gợi ý câu hỏi phỏng vấn

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết
Không có dữ liệu

Không có dữ liệu

Bình luận

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

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