Cách cài đặt Harbor Docker Image Registry trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Harbor là một sổ đăng ký hình ảnh Docker nguồn mở cho các môi trường đám mây gốc. Là một sổ đăng ký hình ảnh, harbor được sử dụng để lưu trữ và phân phối hình ảnh container. Để bảo mật các hiện vật, harbor cung cấp khả năng bảo vệ an ninh thông qua các chính sách, kiểm soát truy cập dựa trên vai trò của người dùng, trình quét bảo mật cho hình ảnh để đảm bảo hình ảnh không có lỗ hổng và chữ ký hình ảnh đảm bảo người dùng kéo hình ảnh từ sổ đăng ký đáng tin cậy.

Harbor là một dự án tốt nghiệp CNCF và là sổ đăng ký hình ảnh cấp doanh nghiệp. Cung cấp khả năng tuân thủ và hiệu suất cao giúp bạn quản lý các hiện vật một cách nhất quán và an toàn trên các môi trường đám mây gốc như Kubernetes và Docker.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt Harbor Image Registry bằng Docker trên máy chủ Ubuntu 22.04. Hướng dẫn này bao gồm cài đặt Docker CE, cài đặt harbor cơ bản với SSL được bật và cách sử dụng và quản trị cơ bản của harbor như một sổ đăng ký hình ảnh.

Điều kiện tiên quyết​

Để xem qua hướng dẫn này, bạn sẽ cần các yêu cầu sau:
  • Máy chủ Ubuntu 22.04 - Ví dụ này sử dụng máy chủ Ubuntu chung và mới với tên máy chủ 'harbor-server'.
  • Người dùng không phải root có quyền root/quản trị viên.
  • Tên miền hoặc tên miền cục bộ sẽ được harbor sử dụng.

Cài đặt Docker CE (Phiên bản cộng đồng)​

Sổ đăng ký hình ảnh harbor cung cấp nhiều phiên bản có thể cài đặt trên các loại môi trường khác nhau. Bạn có thể triển khai harbor lên Kubernetes thông qua biểu đồ Helm hoặc cài đặt harbor bằng Docker.

Trong ví dụ này, bạn sẽ cài đặt harbor thông qua công cụ Docker. Bây giờ bạn sẽ cài đặt Docker CE (Phiên bản cộng đồng) vào máy chủ Ubuntu của mình thông qua kho lưu trữ Docker chính thức.

Chạy lệnh apt bên dưới để cài đặt một số phụ thuộc cơ bản.
Mã:
sudo apt install \
 ca-certificates \
 curl \
 gnupg \
 lsb-release
Nhập y khi được nhắc xác nhận. Sau đó nhấn ENTER để tiếp tục.

Sau khi các phụ thuộc được cài đặt, hãy chạy lệnh sau để tải xuống khóa GPG cho kho lưu trữ Docker, sau đó thêm kho lưu trữ Docker chính thức vào hệ thống của bạn.
Mã:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Bây giờ hãy làm mới và cập nhật chỉ mục gói của bạn thông qua lệnh apt bên dưới.
Mã:
sudo apt update
Bạn sẽ nhận được đầu ra cho biết kho lưu trữ CE của Docker là đã thêm.

Tiếp theo, sử dụng lệnh apt sau để cài đặt Docker CE và Docker Compose vào hệ thống của bạn.
Mã:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Nhập y để xác nhận cài đặt, sau đó nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22207%22%3E%3C/svg%3E


Sau khi Docker được cài đặt, hãy chạy lệnh systemctl sau để xác minh trạng thái hiện tại của dịch vụ Docker.
Mã:
sudo systemctl is-enabled docker
sudo systemctl status docker
Bây giờ bạn sẽ nhận được kết quả như ảnh chụp màn hình sau - dịch vụ Docker đang chạy và được bật. Dịch vụ Docker sẽ tự động chạy khi khởi động hệ thống.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E


Sau khi Docker engine được cài đặt, tiếp theo bạn sẽ bắt đầu cài đặt harbor bằng cách tải xuống gói cài đặt harbor.

Tải xuống Harbor Installer​

Bạn sẽ cần tải xuống gói cài đặt harbor để cài đặt harbor. Có hai loại trình cài đặt harbor, phiên bản ngoại tuyến và phiên bản trực tuyến.

Hướng dẫn này sử dụng trình cài đặt harbor ngoại tuyến để cài đặt harbor. Bây giờ bạn sẽ tải trình cài đặt harbor offline xuống hệ thống của mình.

Di chuyển thư mục làm việc đến '/tmp' và tải trình cài đặt harbor offline qua lệnh curl bên dưới.
Mã:
cd /tmp
curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep '\.tgz$' | wget -i -
Bây giờ hãy giải nén trình cài đặt harbor offline qua lệnh tar bên dưới. Sau khi trình cài đặt được giải nén, bạn sẽ thấy thư mục mới 'harbor'.
Mã:
tar -xzvf harbor-offline-installer-v2.6.1.tgz
Di chuyển thư mục 'harbor' tới '/opt', nghĩa là cài đặt harbor của bạn sẽ là '/opt/harbor'.
Mã:
sudo mv harbor /opt/

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22737%22%20height=%22276%22%3E%3C/svg%3E

Cấu hình cài đặt Harbor​

Sau khi tải xuống trình cài đặt ngoại tuyến của harbor, bây giờ bạn sẽ thiết lập cài đặt harbor thông qua tệp cấu hình 'harbor.yml' có trong gói harbor.

Với tệp 'harbor.yml', bạn sẽ thiết lập tên miền cho cài đặt harbor, bật HTTPS an toàn trên harbor, thiết lập mật khẩu quản trị viên và cuối cùng là thiết lập cơ sở dữ liệu.

Trước khi bắt đầu, hãy đảm bảo rằng bạn đã trỏ tên miền đến địa chỉ IP của máy chủ và tạo chứng chỉ SSL sẽ được sử dụng để bảo mật harbor.

Di chuyển thư mục làm việc của bạn đến thư mục cài đặt harbor '/opt/harbor'.
Mã:
cd /opt/harbor
Sao chép mẫu cấu hình bến cảng 'harbor.yml.tmpl' vào 'harbor.yml'. Sau đó, sử dụng lệnh nano editor sau để chỉnh sửa tệp cấu hình harbor 'harbor.yml'.
Mã:
cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml
Thay đổi cấu hình chi tiết như bên dưới.
Mã:
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: registry.howtoforge.local

....

# https related config
https:
 # https port for harbor, default is 443
 port: 443
 # The path of cert and key files for nginx
 certificate: /etc/letsencrypt/live/registry.howtoforge.local/fullchain.pem
 private_key: /etc/letsencrypt/live/registry.howtoforge.local/privkey.pem

....

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor_Docker_Ubuntu

....

# Harbor DB configuration
database:
 # The password for the root user of Harbor DB. Change this before any production use.
 password: db_pass_harbor
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Dưới đây là phần chi tiết của configuration:
  • hostname - tên miền sẽ được sử dụng để chạy sổ đăng ký hình ảnh harbor. Trong ví dụ này, harbor sẽ được cài đặt trên 'registry.howtoforge.local'.
  • https - bỏ ghi chú tùy chọn này sẽ bật và bảo mật cài đặt harbor của bạn. Nhưng bạn cũng cần đảm bảo rằng bạn đã tạo chứng chỉ SSL cho tên miền của mình và nhập đường dẫn đầy đủ của khóa công khai và khóa riêng của chứng chỉ.
  • harbor_admin_password - mật khẩu ban đầu sẽ được sử dụng trong quá trình cài đặt harbor.
  • database - cấu hình cơ sở dữ liệu cho harbor. Vì vậy, hãy đảm bảo thay đổi mật khẩu bằng mật khẩu mạnh mới.

Cài đặt Harbor thông qua Installer Script và Docker Compose​

Bây giờ trình cài đặt Harbor ngoại tuyến đã được tải xuống và tệp cấu hình cơ sở cho 'harbor.yml' đã được định cấu hình, giờ đây bạn sẽ sẵn sàng bắt đầu cài đặt Harbor thông qua tập lệnh cài đặt 'install.sh' có sẵn trong thư mục cài đặt Harbor '/opt/harbor'.

Trước khi bắt đầu cài đặt Harbor, hãy đảm bảo rằng thư mục làm việc hiện tại của bạn là '/opt/harbor'.

Bây giờ hãy chạy tập lệnh cài đặt Harbor 'install.sh' bằng sudo quyền.
Mã:
sudo ./install.sh
Tập lệnh cài đặt hiện sẽ kiểm tra các yêu cầu hệ thống trước khi bắt đầu cài đặt harbor. Trình cài đặt sẽ đảm bảo rằng Docker engine và Docker Compose được cài đặt trên hệ thống.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22377%22%3E%3C/svg%3E


Bây giờ trình cài đặt sẽ trích xuất các hình ảnh sẽ được sử dụng để triển khai harbor.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22599%22%3E%3C/svg%3E


Sau đó, trình cài đặt sẽ chuẩn bị môi trường hệ thống cho việc triển khai bến cảng và tạo ra các cấu hình cần thiết. Sau đó, quá trình cài đặt sẽ bắt đầu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22638%22%20height=%22508%22%3E%3C/svg%3E


Khi quá trình cài đặt hoàn tất, bạn sẽ thấy đầu ra của dịch vụ container bến cảng đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22124%22%3E%3C/svg%3E


Bây giờ bạn đã cài đặt harbor thông qua tập lệnh cài đặt, tiếp theo bạn sẽ xác minh harbor bằng cách kiểm tra các dịch vụ container trên hệ thống của bạn và truy cập vào sổ đăng ký hình ảnh harbor thông qua trình duyệt web.

Chạy lệnh 'docker compose' sau để xác minh rằng các dịch vụ container harbor đang chạy.
Mã:
ls
docker compose ps
Trong đầu ra bên dưới - các dịch vụ container harbor đang chạy và hoạt động bình thường.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22227%22%3E%3C/svg%3E


Tiếp theo, hãy mở trình duyệt web và truy cập tên miền để cài đặt harbor của bạn (ví dụ: https://registry.howtoforge.local/). Và bây giờ bạn sẽ nhận được trang đăng nhập của sổ đăng ký hình ảnh bến cảng của bạn.

Đăng nhập bằng người dùng mặc định là admin và mật khẩu mà bạn đã cấu hình thông qua tệp cấu hình 'harbor.yml'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E


Bây giờ bạn sẽ nhận được bảng điều khiển bến cảng khi bạn có mật khẩu chính xác. Ngoài ra, bạn có thể thấy trên màn hình dự án mặc định trong bến cảng có tên là 'thư viện'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22600%22%3E%3C/svg%3E


Tại thời điểm này, bạn đã hoàn tất triển khai baro và xác minh rằng bến cảng đang chạy thông qua công cụ Docker phối hợp vùng chứa và Docker Compose.

Ở bước tiếp theo, bạn sẽ tìm hiểu cách quản trị cơ bản của sổ đăng ký hình ảnh bến cảng. Bạn sẽ học cách thêm người dùng, thiết lập dự án, đăng nhập qua CLI docker và cuối cùng là tải hình ảnh lên bến cảng.

Tạo người dùng bến cảng​

Sau khi sổ đăng ký hình ảnh bến cảng đang chạy, bây giờ bạn sẽ học cách thiết lập và tạo người dùng mới thông qua bảng điều khiển quản trị bến cảng.

Trong phần 'Quản trị', hãy nhấp vào menu 'Người dùng', sau đó nhấp vào nút 'NGƯỜI DÙNG MỚI'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22227%22%3E%3C/svg%3E


Nhập thông tin chi tiết về người dùng mới và xác nhận bằng cách nhấn nút 'OK'. Trong ví dụ này, bạn sẽ tạo một người dùng bến cảng mới 'alice' sẽ được sử dụng để đăng nhập vào bến cảng thông qua docker cli.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22564%22%20height=%22467%22%3E%3C/svg%3E


Sau khi người dùng được tạo, bạn sẽ thấy người dùng của mình trên 'Danh sách menu của người dùng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22185%22%3E%3C/svg%3E

Thêm người dùng vào dự án Harbor​

Trong harbor, không gian người dùng mà người dùng sẽ làm việc là dự án. Trong cài đặt mặc định, harbor cung cấp tên dự án mặc định là 'library'.

Trong bước này, bạn sẽ tìm hiểu cách thêm người dùng mới 'alice' vào dự án mặc định là 'library' để người dùng mới có thể quản lý dự án 'library'. Ngoài ra, bạn sẽ cần chỉ định vai trò cho người dùng mới trên dự án mục tiêu.

Nhấp vào menu 'Dự án; và bạn sẽ thấy dự án mặc định 'thư viện' có sẵn trên bến cảng của bạn.

Nhấp vào dự án 'thư viện' để biết thông tin chi tiết về cài đặt của dự án đó.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22252%22%3E%3C/svg%3E


Nhấp vào menu 'Thành viên' và bạn sẽ thấy chỉ có một thành viên quản trị trên dự án đó. Nhấp vào nút 'NGƯỜI DÙNG' để thêm người dùng bến cảng vào 'thư viện' của dự án.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22348%22%3E%3C/svg%3E


Nhập người dùng mà bạn muốn thêm vào dự án và chỉ định vai trò cho người dùng đó. Ví dụ này sẽ thêm người dùng 'alice' vào dự án 'thư viện' với vai trò 'Quản trị viên dự án'.

Nhấp vào 'OK' để xác nhận.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22563%22%20height=%22375%22%3E%3C/svg%3E


Bây giờ bạn sẽ thấy người dùng 'alice' có trong danh sách thành viên của dự án 'thư viện'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22369%22%3E%3C/svg%3E

Đăng nhập vào Harbor thông qua Docker Client​

Trong bước này, bạn sẽ học cách thiết lập sổ đăng ký hình ảnh bến cảng bằng Docker CLI. Bạn sẽ đăng nhập vào sổ đăng ký hình ảnh bến cảng thông qua Docker CLI với người dùng mà bạn đã tạo - ví dụ này sử dụng người dùng 'alice'.

Quay lại máy chủ đầu cuối của bạn và chạy lệnh docker sau để đăng nhập vào sổ đăng ký hình ảnh bến cảng.
Mã:
docker login https://registry.howtoforge.local/
Khi được nhắc, hãy nhập tên người dùng và mật khẩu cho người dùng của bạn. Ví dụ này sẽ sử dụng người dùng 'alice'.

Khi đăng nhập thành công, bạn sẽ thấy thông báo như 'Đăng nhập thành công'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22749%22%20height=%22223%22%3E%3C/svg%3E


Sau khi đăng nhập vào harbor thông qua docker cli, giờ bạn có thể kéo và đẩy hình ảnh vào harbor thông qua docker cli.

Đẩy hình ảnh vào Harbor Registry​

Sau khi được xác thực vào harbor image registry, giờ bạn sẽ học cách đẩy/tải hình ảnh lên harbor image registry của mình thông qua CLI Docker.

Trước khi bắt đầu, hãy chạy lệnh docker sau để tải xuống phiên bản mới nhất của hình ảnh 'nginx:alpine'.
Mã:
docker pull nginx:alpine
Bây giờ hãy xác minh danh sách hình ảnh thông qua lệnh docker bên dưới. Bạn sẽ thấy hình ảnh 'nginx:alpine' đã được tải xuống.
Mã:
docker images

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22527%22%3E%3C/svg%3E


Để đẩy hình ảnh tùy chỉnh vào sổ đăng ký hình ảnh của harbor, bạn có thể thay đổi thẻ của hình ảnh hiện tại theo định dạng như 'harbor-domain.com/project/image:version'.

Vì vậy, hãy chạy lệnh sau để thay đổi thẻ mặc định 'nginx:alpine' bằng 'registry.howtoforge.local/library/nginx:alpine'.
Mã:
docker tag nginx:alpine registry.howtoforge.local/library/nginx:alpine
Sau đó, hãy tải lên và đẩy hình ảnh vào sổ đăng ký hình ảnh harbor bằng lệnh sau. Lệnh này sẽ tải hình ảnh lên sổ đăng ký hình ảnh 'registry.howtoforge.local' với tên dự án là 'library'.
Mã:
docker push registry.howtoforge.local/library/nginx:alpine
Dưới đây là kết quả trong quá trình đẩy hình ảnh lên sổ đăng ký hình ảnh harbor.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22250%22%3E%3C/svg%3E


Sau khi hình ảnh được tải lên bến cảng, hãy quay lại bảng điều khiển quản trị bến cảng và nhấp vào menu 'Dự án' rồi nhấp vào 'Kho lưu trữ'. Bạn sẽ thấy hình ảnh mới được tải lên sổ đăng ký hình ảnh harbor thông qua dòng lệnh docker.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22272%22%3E%3C/svg%3E

Kết luận​

Bạn đã cài đặt sổ đăng ký hình ảnh harbor thông qua Docker trên máy chủ Ubuntu 22.04. Bạn cũng đã bảo mật việc triển khai harbor bằng chứng chỉ SSL, vì vậy bây giờ bạn có thể truy cập harbor thông qua kết nối bảo mật HTTPS.

Đối với quản trị cơ bản của harbor, bạn đã học cách thiết lập người dùng và chỉ định vai trò trong harbor. Bạn cũng đã học cách quản trị cơ bản để quản lý các dự án trong harbor. Và cuối cùng, bạn đã thêm thành công harbor vào Docker dưới dạng sổ đăng ký hình ảnh và tải một hình ảnh lên harbor.

Từ đây, bạn có thể bắt đầu thêm người dùng mới và thiết lập một dự án mới sẽ được sử dụng cho nhóm phát triển của bạn.
 
Back
Bên trên