Docker không cung cấp khả năng lưu trữ hoặc phân phối hình ảnh dài hạn, do đó các nhà phát triển cần thứ gì đó nhiều hơn. Docker Registry thực hiện các tác vụ này và việc sử dụng nó đảm bảo cùng một môi trường thời gian chạy ứng dụng thông qua ảo hóa. Tuy nhiên, việc xây dựng một hình ảnh có thể liên quan đến việc đầu tư thời gian đáng kể, đó là lúc Quay (phát âm là kway ) xuất hiện. Một sổ đăng ký như Quay có thể vừa xây dựng vừa lưu trữ các container. Sau đó, bạn có thể triển khai các container này trong thời gian ngắn hơn và ít nỗ lực hơn so với việc sử dụng Docker Registry. Hướng dẫn này giải thích cách Quay có thể là một phần thiết yếu của quy trình phát triển và chi tiết cách triển khai sổ đăng ký Quay.
Red Hat Quay là gì?
Red Hat Quay là một sổ đăng ký có khả năng chịu lỗi và độ tin cậy cao, được trang bị chức năng cần thiết để hoạt động trong các môi trường quy mô lớn. Quay cung cấp một nền tảng sổ đăng ký có mục đích cụ thể, tập trung và có thể mở rộng, hoạt động trong môi trường đa cụm trải dài trên nhiều trang web. Quay cũng phân tích các hình ảnh container để tìm lỗ hổng bảo mật trước khi bạn chạy chúng. Điều này đảm bảo rằng các triển khai trải dài trên các khu vực địa lý tách biệt không gặp phải nhiều dạng hỏng thực thi khác nhau. Cũng là một phần của chức năng bảo mật, Quay cung cấp quyền kiểm soát truy cập chi tiết. Điều này có nghĩa là các nhà phát triển làm việc trên một dự án tuân thủ nguyên tắc đặc quyền tối thiểu , nhưng vẫn có các quyền cần thiết để cộng tác vào các nhiệm vụ.
Tính năng của Quay
Quay cung cấp nhiều tính năng, được chia thành các danh mục sau:
- Bảo vệ :
- Kho lưu trữ container an toàn cung cấp các thiết lập xác thực và truy cập.
- Quét container để tăng cường bảo mật.
- Liên tục quét nội dung hình ảnh và cung cấp báo cáo về các vấn đề lỗ hổng tiềm ẩn.
- Sử dụng các nhà cung cấp xác thực hiện có dựa trên Lightweight Directory Access Protocol (LDAP) hoặc OpenID Connect (OIDC).
- Ghi nhật ký và kiểm tra mọi sự kiện liên quan đến bảo mật trong hệ thống bằng cách sử dụng bộ lưu trữ nhật ký dài hạn.
- Tính linh hoạt :
- Sử dụng các quy tắc truy cập chi tiết cho phép bạn phân lập các nhóm người dùng khác nhau hoặc cho phép cộng tác giữa các nhóm khi cần.
- Cho phép một dự án bắt đầu ở quy mô nhỏ và mở rộng lên quy mô lớn hơn nhiều mà không cần thay đổi lớn trong dự án.
- Hỗ trợ triển khai phân tán theo địa lý với một điểm truy cập máy khách duy nhất để tăng hiệu suất.
- Cung cấp bộ nhớ đệm trong suốt của các hình ảnh được lưu trữ trong các sổ đăng ký chứa khác.
- Hoạt động với cả môi trường đám mây và ngoại tuyến hoặc kết hợp cả hai.
- Kết hợp hỗ trợ cho nhiều dịch vụ lưu trữ đối tượng và hệ thống cơ sở dữ liệu của bên thứ ba.
- Năng suất của nhà phát triển :
- Giảm lượng công việc cần thiết để xây dựng và triển khai container mới.
- Giúp quản lý việc tăng trưởng dung lượng lưu trữ dễ dàng hơn thông qua quản lý hạn ngạch.
- Cung cấp tích hợp quản lý mã nguồn bằng cách sử dụng các quy trình Tích hợp liên tục (CI) được đơn giản hóa.
- Duy trì tính năng “cỗ máy thời gian” để bảo vệ chống lại việc xóa nhầm.
Thường bị bỏ qua trong các bài đánh giá về Quay là nó hoạt động với nhiều thứ hơn là chỉ Docker. Nó cũng hoạt động với các sản phẩm như Rancher , Hyper-V , Codefresh và Skopeo .
Khi nào bạn nên sử dụng Quay?
Quay có thể gây ra một số vấn đề khi sử dụng lần đầu. Ví dụ, việc cấu hình các tính năng bảo mật có thể tốn thời gian và dễ xảy ra lỗi. Một trong những vấn đề lớn nhất là Quay không thực sự là một sản phẩm duy nhất và việc biết nên chọn loại Quay nào có thể gây nhầm lẫn. Sau đây là tổng quan nhanh về các loại Quay khác nhau:
- Project Quay : Đây là kho lưu trữ container độc lập, mã nguồn mở, tương tự như Sonatype , Nexus Repository OSS hoặc Harbor .
- Red Hat Quay.io : Đây là phiên bản Quay cấp doanh nghiệp được định giá theo số lượng kho lưu trữ riêng tư bạn tạo. Tuy nhiên, kho lưu trữ công cộng là miễn phí.
- Red Hat Quay : Đây là phiên bản cấp doanh nghiệp có sẵn thông qua Red Hat OpenShift để sử dụng trong việc tạo kho lưu trữ riêng tư.
Đầu tiên, bạn cần chọn đúng hương vị Quay cho loại dự án bạn muốn tạo. Tiếp theo, cấu hình môi trường Quay đúng cách trước khi bạn bắt đầu sử dụng. Bạn muốn giới hạn việc sử dụng Project Quay cho mục đích thử nghiệm hoặc các dự án nhỏ, trong khi Red Hat Quay phù hợp hơn cho các dự án lớn.
Trước khi bạn bắt đầu
- Nếu bạn chưa thực hiện, hãy tạo một tài khoản Linode và Compute Instance. Sử dụng tối thiểu gói Linode 4 GB để tạo thiết lập Quay trên CentOS Stream. Xem hướng dẫn Bắt đầu với Linode và Tạo Compute Instance của chúng tôi .
- Làm theo hướng dẫn Thiết lập và Bảo mật Phiên bản Compute của chúng tôi để cập nhật hệ thống của bạn. Bạn cũng có thể muốn đặt múi giờ, cấu hình tên máy chủ, tạo tài khoản người dùng giới hạn và tăng cường quyền truy cập SSH.
- Hướng dẫn này sử dụng Docker để chạy các container Quay. Để cài đặt Docker, hãy làm theo hướng dẫn trong hướng dẫn Cài đặt và sử dụng Docker trên CentOS và Fedora của chúng tôi thông qua phần Quản lý Docker với Người dùng không phải Root . Xác minh rằng Docker đã sẵn sàng để sử dụng bằng
docker version
lệnh. Hướng dẫn này sử dụng Docker Community Edition (CE) 24.0.7 , nhưng các phiên bản mới hơn và Docker Enterprise Edition (EE) sẽ hoạt động. - Hướng dẫn này sử dụng cơ sở dữ liệu PostgreSQL để lưu trữ siêu dữ liệu dài hạn bắt buộc của Quay (cơ sở dữ liệu này không được sử dụng cho hình ảnh). Để cài đặt PostgreSQL, hãy làm theo hướng dẫn Cài đặt và sử dụng PostgreSQL trên CentOS 8 của chúng tôi (hướng dẫn này cũng hoạt động với CentOS Stream 9) cho đến phần Sử dụng PostgreSQL . Đảm bảo bạn cấu hình PostgreSQL để tự động khởi động sau khi máy chủ khởi động lại.Cảnh báoTránh sử dụng MariaDB cho cài đặt của bạn vì việc sử dụng MariaDB đã lỗi thời trong các phiên bản Quay gần đây. Sau khi cài đặt và bảo mật PostgreSQL, hãy tạo cơ sở dữ liệu Quay.
- Quay sử dụng Redis để lưu trữ ngắn hạn các sự kiện thời gian thực. Để cài đặt Redis, hãy làm theo hướng dẫn Cài đặt và Cấu hình Redis trên CentOS 7 của chúng tôi (cũng hoạt động với CentOS Stream 8 và 9) thông qua phần Xác minh Cài đặt .
Ghi chúHướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu quyền nâng cao được thêm tiền tố
sudo
. Nếu bạn không quen với
sudo
lệnh này, hãy xem hướng dẫn
Tạo Quay Setup trên CentOS Stream trên Server
Phần này hướng dẫn tạo một thiết lập Quay nhỏ để sử dụng cho mục đích thử nghiệm hoặc một dự án nhỏ. Thực hiện cập nhật hệ thống trước khi tiếp tục.
Triển khai cơ sở dữ liệu
Thực hiện theo các bước dưới đây để tạo và cấu hình cơ sở dữ liệu PostgreSQL cho Quay:
1.Mở psql
lời nhắc bằng postgres
tài khoản quản trị:
sudo -u postgres psql
Nếu được nhắc, hãy cung cấp mật khẩu bạn đã cung cấp khi bảo mật PostgreSQL:
postgres=#
2.Tạo một quay_registry
cơ sở dữ liệu mẫu mới:
CREATE DATABASE quay_registry;
CREATE DATABASE
3.Xác minh cơ sở dữ liệu có tồn tại:
\l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
quay_registry | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
4.Tạo một người dùng mẫu mới quay_registry
và cung cấp cho người dùng đó một mật khẩu:
CREATE USER quay_registry WITH encrypted password 'EXAMPLE_PASSWORD';
CREATE ROLE
5.Đảm bảo người dùng Quay có mặt:
\du
List of roles
Role name | Attributes | Member of
---------------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
quay_registry | | {}
6.Cấp cho người dùng Quay quyền đối với cơ sở dữ liệu Quay:
GRANT ALL PRIVILEGES ON DATABASE quay_registry TO quay_registry;
GRANT
7.Xác minh rằng các quyền đã được áp dụng:
\l quay_registry
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------+----------+----------+-------------+-------------+----------------------------
quay_registry | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | quay_registry=CTc/postgres
(1 row)
8.Nhập quay_registry
cơ sở dữ liệu:
\c quay_registry
You are now connected to database "quay_registry" as user "postgres".
9.Cài đặt pg_tgrm
tiện ích mở rộng:
CREATE EXTENSION pg_trgm;
CREATE EXTENSION
10.Kiểm tra xem pg_trgm
tiện ích mở rộng đã được cài đặt chưa:
SELECT * FROM pg_extension WHERE extname = 'pg_trgm';
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+---------+----------+--------------+----------------+------------+-----------+--------------
16396 | pg_trgm | 10 | 2200 | t | 1.5 | |
(1 row)
11.Thoát khỏi psql
shell:
\q
12.Mở pg_hba.conf
tệp, thường nằm tại /var/lib/pgsql/data/
, trong trình soạn thảo văn bản có quyền quản trị:
sudo nano /var/lib/pgsql/data/pg_hba.conf
Sửa đổi pg_hba.conf
tệp để cho phép kết nối từ xa bằng cách chỉnh sửa # IPv4 local connections:
dòng này sao cho giống như sau:
# IPv4 local connections:
host all all 0.0.0.0/0 md5
Khi hoàn tất, nhấn CTRL+ X, tiếp theo là Ythen Enterđể lưu tệp và thoát nano
.
13.Bây giờ hãy mở postgresql.conf
tệp, thông thường nằm ở /var/lib/pgsql/data/
:
sudo nano /var/lib/pgsql/data/postgresql.conf
Sửa đổi postgresql.conf
tệp để lắng nghe trên tất cả các địa chỉ bằng cách sửa đổi listen_addresses
dòng như sau:
listen_addresses = '*'
Khi hoàn tất, nhấn CTRL+ X, tiếp theo là Ythen Enterđể lưu tệp và thoát nano
.
14.Khởi động lại máy chủ để những thay đổi này có hiệu lực:
sudo systemctl restart postgresql
Cấu hình Redis
Thực hiện các tác vụ cấu hình Redis bổ sung sau cho Quay.
1.Tạo tệp cấu hình Redis:
sudo nano /etc/redis/redis.conf
Bình luận dòng có nội dung như sau bind 127.0.0.1 ::1
và thêm một dòng mới bên dưới có nội dung bind 0.0.0.0
:
#bind 127.0.0.1 -::1
bind 0.0.0.0
Khi hoàn tất, nhấn CTRL+ X, tiếp theo là Ythen Enterđể lưu tệp và thoát nano
:
2.Đảm bảo thay đổi có hiệu lực:
sudo systemctl restart redis
3.Xác nhận Redis đã sẵn sàng để sử dụng:
systemctl status redis
4.Xác minh rằng Redis đang lắng nghe tại cổng 6379
:
ss -tunelp | grep 6379
tcp LISTEN 0 511 0.0.0.0:6379 0.0.0.0:* uid:992 ino:73370 sk:1001 cgroup:/system.slice/redis.service <->
Tạo cấu hình Quay
Đã đến lúc cài đặt bản sao Quay. Hướng dẫn này sử dụng phiên bản Project Quay miễn phí và mã nguồn mở đã thảo luận trước đó.
1.Nhận một bản sao của Quay:
docker pull quay.io/projectquay/quay:v3.9.0
v3.9.0: Pulling from projectquay/quay
57168402cb72: Pull complete
3d50b44561f0: Pull complete
e42a14c55ca9: Pull complete
2d3027ebf95a: Pull complete
0422499b4b00: Pull complete
27f2a5fad2e5: Pull complete
60b93bda04c7: Pull complete
15f0806a68f5: Pull complete
Digest: sha256:633818d2122a463e3aad8febbdc607a2e4df95db38b308fad8c071a60518f0a5
Status: Downloaded newer image for quay.io/projectquay/quay:v3.9.0
quay.io/projectquay/quay:v3.9.0
2.Xác minh quá trình tải xuống bằng cách chạy echo
bên trong vùng chứa:
docker run quay.io/projectquay/quay:v3.9.0 /bin/echo "Welcome to the Docker World!"
"Welcome to the Docker World!"
__ __
/ \ / \ ______ _ _ __ __ __
/ /\ / /\ \ / __ \ | | | | / \ \ \ / /
/ / / / \ \ | | | | | | | | / /\ \ \ /
\ \ \ \ / / | |__| | | |__| | / ____ \ | |
\ \/ \ \/ / \_ ___/ \____/ /_/ \_\ |_|
\__/ \__/ \ \__
\___\ by Red Hat
Build, Store, and Distribute your Containers
Running '/bin/echo'
Welcome to the Docker World!
3.Khởi động ứng dụng để cho phép truy cập vào cài đặt cấu hình. Vì hệ thống không có khóa công khai được cấu hình nên thiết lập này sử dụng cổng 8080
và http
kết nối.
docker run -p 8080:8080 quay.io/projectquay/quay:v3.9.0 config EXAMPLE_PASSWORD
__ __
/ \ / \ ______ _ _ __ __ __
/ /\ / /\ \ / __ \ | | | | / \ \ \ / /
/ / / / \ \ | | | | | | | | / /\ \ \ /
\ \ \ \ / / | |__| | | |__| | / ____ \ | |
\ \/ \ \/ / \_ ___/ \____/ /_/ \_\ |_|
\__/ \__/ \ \__
\___\ by Red Hat
Build, Store, and Distribute your Containers
Startup timestamp:
Fri Nov 10 02:00:57 UTC 2023
Running all default config services
2023-11-10 02:00:58,247 INFO RPC interface 'supervisor' initialized
2023-11-10 02:00:58,247 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2023-11-10 02:00:58,247 INFO supervisord started with pid 8
2023-11-10 02:00:59,250 INFO spawned: 'stdout' with pid 25
2023-11-10 02:00:59,252 INFO spawned: 'config-editor' with pid 26
2023-11-10 02:00:59,254 INFO spawned: 'quotaregistrysizeworker' with pid 27
2023-11-10 02:00:59,257 INFO spawned: 'quotatotalworker' with pid 28
2023-11-10 02:01:00,321 INFO success: stdout entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2023-11-10 02:01:00,322 INFO success: config-editor entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2023-11-10 02:01:00,322 INFO success: quotaregistrysizeworker entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2023-11-10 02:01:00,322 INFO success: quotatotalworker entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
config-editor stdout | time="2023-11-10T02:00:59Z" level=warning msg="An error occurred loading TLS: No public key provided for HTTPS. Server falling back to HTTP."
config-editor stdout | time="2023-11-10T02:00:59Z" level=info msg="Running the confi
4.Mở trình duyệt web và sử dụng định dạng địa chỉ sau để truy cập Quay: http://YOUR_IP_ADDRESS:8080/
.
5.Khi được yêu cầu, hãy cung cấp quayconfig
tên người dùng cùng với mật khẩu bạn đã chọn ở bước ba.
6.Bạn cần điền vào bảy trường trong các phần Cấu hình máy chủ , Cơ sở dữ liệu và Redis :
Trong phần Cấu hình máy chủ , hãy nhập Địa chỉ IPv4 công khai của Akamai Cloud Compute Instance cho trường Tên máy chủ máy chủ :
Trong phần Cơ sở dữ liệu , chọn Postgres từ menu thả xuống Loại cơ sở dữ liệu :Nhập Địa chỉ IPv4 công khai của Akamai Cloud Compute Instance cho trường Máy chủ cơ sở dữ liệu . Nhập
quay_registry
cho cả trường Tên người dùng và Tên cơ sở dữ liệu . Đối với trường Mật khẩu , nhập mật khẩu bạn đã chọn ở bước ba.
Trong phần Redis , hãy nhập Địa chỉ IPv4 công khai của Akamai Cloud Compute Instance cho trường Tên máy chủ Redis :
Ghi chú: Xem Chương 4. Cấu hình Red Hat Quay trong tài liệu chính thức để biết thêm các tùy chọn cấu hình phiên bản Quay của bạn.
7.Khi hoàn tất, hãy nhấp vào nút Xác thực thay đổi cấu hình ở cuối màn hình. Nếu thành công, hãy nhấp vào nút Tải xuống để tải xuống quay-config.tar.gz
tệp.
8.Quay lại terminal và tắt máy chủ Quay đang chạy bằng cách nhấn tổ hợp phím CTRL+ C.
9.Chuyển tệp quay-config.tar.gz
đến thư mục gốc của người dùng ( ~/
) trên Akamai Cloud Compute Instance của bạn.
10.Tạo thư mục lưu trữ và cấu hình, sau đó sao chép tệp quay-config.tar.gz
vào thư mục cấu hình:
sudo mkdir -p /data/quay/storage
sudo mkdir -p /data/quay/config
sudo cp quay-config.tar.gz /data/quay/config/
11.Chuyển đến thư mục cấu hình và giải nén dữ liệu cấu hình cần thiết khỏi quay-config.tar.gz
tệp:
cd /data/quay/config/
sudo tar xvf quay-config.tar.gz
12.Khởi động lại máy chủ Quay với cấu hình mới:
docker run --restart=always -p 8080:8080 \
--sysctl net.core.somaxconn=4096 \
-v /data/quay/config:/conf/stack:Z \
-v /data/quay/storage:/datastorage:Z \
quay.io/projectquay/quay:v3.9.0
Khởi động Quay như thế này sẽ cung cấp cho bạn màn hình cập nhật liên tục để bạn có thể theo dõi hoạt động của sổ đăng ký.
Triển khai một Quay Registry
1.Với máy chủ hiện được cấu hình để hoạt động với Quay, hãy truy cập sổ đăng ký tại http://YOUR_IP ADDRESS:8080/
trong trình duyệt web của bạn. Trong lần truy cập đầu tiên, bạn sẽ thấy màn hình kho lưu trữ Quay:
- Nhấp vào Tạo tài khoản để tạo tài khoản mới. Sau khi tạo tài khoản mới, bạn sẽ thấy một màn hình mới cho biết tài khoản của bạn không có kho lưu trữ:
- Nhấp vào Tạo kho lưu trữ mới để tạo kho lưu trữ đầu tiên của bạn. Màn hình tiếp theo bắt đầu bằng cách yêu cầu bạn nhập tên kho lưu trữ, tên này phải sử dụng số hoặc chữ thường (chữ in hoa có thể khiến Quay từ chối tên).
- Chọn giữa kho lưu trữ công khai hoặc riêng tư, sau đó nhấp vào nút Tạo liên quan .
- Việc điền kho lưu trữ bắt đầu bằng cách phát lệnh docker hoặc lệnh podman pull để lấy container ứng dụng. Sau khi lấy được mã, bạn có thể thêm thẻ vào đó.
- Ngoài ra còn có một tab Thiết lập kho lưu trữ nơi bạn có thể cấu hình chi tiết kho lưu trữ. Một phần của các thiết lập này là thêm hoặc xóa người dùng và điều chỉnh các quyền kho lưu trữ cụ thể: đọc, ghi và quản trị. Bạn cũng có thể cấu hình các sự kiện và thông báo dựa trên hoạt động của kho lưu trữ để mọi người trong dự án đều được thông báo về các thay đổi.
- Để tạo thêm kho lưu trữ, hãy nhấp vào biểu tượng + , sau đó chọn Kho lưu trữ mới từ danh sách thả xuống. Chương 1. Tạo kho lưu trữ cung cấp cho bạn thông tin chi tiết bổ sung về cách làm việc với kho lưu trữ bằng Quay.
Phần kết luận
Quay cung cấp phương tiện để nâng cao quá trình phát triển container theo ba cách: bảo mật được cải thiện, tính linh hoạt cao hơn và năng suất của nhà phát triển được nâng cao. Để có được những lợi ích này, bạn cần thực hiện cài đặt nhiều phần của một số sản phẩm phần mềm. Điều này là để Quay có đủ tài nguyên cần thiết để thực hiện các tác vụ được yêu cầu. Tuy nhiên, điều này làm tăng thêm tính phức tạp của môi trường phát triển. Do đó, có sự đánh đổi giữa các lợi ích của Quay và nhu cầu liên quan đến việc thực hiện các tác vụ cấu hình bổ sung. Nếu bạn muốn phát triển thứ gì đó vượt ra ngoài một dự án đơn giản, hãy cân nhắc thêm chi phí sử dụng Red Hat Quay thay vì Project Quay.
Nguồn: https://www.linode.com/docs/guides/build-a-cloud-native-private-registry-with-quay/