Các phương pháp hay nhất để xây dựng container có thể khởi động
(developers.redhat.com)- Image mode của Red Hat Enterprise Linux (RHEL) giúp đơn giản hóa quá trình xây dựng, triển khai và quản lý RHEL dưới dạng container có thể khởi động
- Nhà phát triển, vận hành và nhà cung cấp giải pháp có thể dùng cùng một bộ công cụ và kỹ thuật gốc container để quản lý ứng dụng và hệ điều hành nền tảng
Xây dựng container có thể khởi động vs. container ứng dụng
- Tương tự container ứng dụng thông thường, có thể xây dựng container có thể khởi động bằng các công nghệ container hiện có như Podman, Docker hoặc buildkit
- Image có thể được lưu trong các container registry như Quay.io, Docker Hub, GitHub Container Registry hoặc registry container nội bộ
- Container có thể khởi động là bước tiến hóa tự nhiên của công nghệ container, mang lại quy trình làm việc và trải nghiệm người dùng gốc container toàn diện, bao gồm cả toàn bộ hệ điều hành và Linux kernel
Sử dụng Containerfile
- Containerfile (còn gọi là Dockerfile) chứa mọi thông tin cần thiết để xây dựng container image, bao gồm image nền tảng, hướng dẫn cài đặt gói phần mềm và sao chép tệp từ Git repository
- Quy trình làm việc và công cụ để xây dựng container có thể khởi động về bản chất là giống với container ứng dụng
- Tuy nhiên, có một số phương pháp hay nhất cần áp dụng khi xây dựng container có thể khởi động
Các phương pháp hay nhất cho linting
- Khuyến nghị chạy lệnh
bootc container lintở bước cuối cùng của Containerfile - Lệnh này thực hiện nhiều kiểm tra bên trong container image và sẽ báo lỗi nếu có vấn đề
- Ví dụ, nó kiểm tra xem có nhiều kernel trong
/usr/lib/moduleshay không, kiểm tra cú pháp tệp trong/usr/lib/bootc/kargs.d, đồng thời rà soát tình trạng vệ sinh (hygiene) của/etcvà/usr/etc
GitHub Actions và dung lượng đĩa
- Khi dùng GitHub Actions để xây dựng container, có thể gặp các vấn đề liên quan đến dung lượng đĩa do kích thước của container image có thể khởi động
- Để giải quyết các vấn đề này, có thể thêm một bước xóa thư mục
/opt/hostedtoolcachetrong tệp workflow để giải phóng dung lượng đĩa
Hiểu về /var
/varlà thư mục dành cho dữ liệu và trạng thái cục bộ của máy, có tính bền vững và có thể thay đổi; ngay cả khi cập nhật, nội dung/varcủa container image cũng không thay đổi- Vì vậy, nếu ứng dụng ghi dữ liệu vào
/var, nên chuyển dữ liệu đó sang thư mục khác như/usr/shaređể tránh các vấn đề mount chỉ đọc
Sử dụng lệnh useradd
- Nếu gọi
useraddtrong script đóng gói, có thể xảy ra state drift khi/etc/passwdbị sửa đổi cục bộ - Để tránh vấn đề này, có thể cân nhắc dùng tùy chọn
DynamicUser=yescủasystemdđể tạo người dùng động - Tuy nhiên, trong các trường hợp phức tạp, việc chuyển sang
DynamicUser=yescó thể khó khăn; khi đó nên dùngsystemd-sysusersđể tạo người dùng
Nhúng container bằng Quadlet
- Chạy workload được container hóa trong
systemdlà một cách đơn giản nhưng mạnh mẽ để triển khai đáng tin cậy - Podman cung cấp công cụ Quadlet để tích hợp với
systemd, cho phép quản lý workload được container hóa theo kiểu khai báo - Quadlet tích hợp hoàn hảo với image mode và có thể dùng các image được ràng buộc logic để kéo sẵn image container ứng dụng khi khởi động
Tóm tắt
- Dùng image mode tạo ra một sự chuyển dịch mô hình trong cách vận hành host RHEL
- Có thể xây dựng, triển khai và quản lý hệ điều hành bằng các công cụ cloud-native, đồng thời làm việc với một OS bất biến nơi phần lớn hệ thống được mount ở chế độ chỉ đọc
Chưa có bình luận nào.