Image default
Máy Tính

Chạy Docker trong LXC trên Proxmox: Giải pháp tối ưu cho thiết bị cấu hình yếu

Vài tuần trước, tôi đã chuyển từ Docker sang Podman vì giải pháp sau cung cấp thêm một số tính năng phù hợp với nhu cầu container hóa của mình. Mặc dù vậy, Docker vẫn là một môi trường chạy container mạnh mẽ dù có những hạn chế nhất định, và tôi sẽ giới thiệu nó cho bất kỳ ai muốn làm quen với những chi tiết chuyên sâu của công nghệ container.

Trên thực tế, tôi thậm chí còn dành một máy ảo (VM) dựa trên Proxmox hoàn toàn cho Docker để có thể mày mò trong thời gian rảnh. Nhưng giờ đây, khi tôi bắt đầu chuyển đổi những chiếc laptop cũ thành các node Proxmox VE (PVE), tôi đã trang bị cho mỗi chiếc một Docker LXC. Trước khi bạn đưa ra những ý kiến phản đối về ý tưởng chạy Docker bên trong một container thay vì một máy ảo, tôi phải thừa nhận rằng cách thiết lập kỳ lạ này lại có những lợi thế riêng.

Tại sao tôi bắt đầu chạy Docker trong LXC?

Lợi ích vượt trội cho các thiết bị cấu hình yếu

Khi tôi bắt đầu hành trình hồi sinh các phần cứng lỗi thời và máy tính cấu hình thấp thành các máy chủ Proxmox, tài nguyên hạn chế của chúng trở thành một nút thắt cổ chai lớn cho các thử nghiệm của tôi. Chạy nhiều hơn vài máy ảo (và trong một số trường hợp, thậm chí chỉ một máy ảo) gần như là không thể trên các hệ thống ngốn CPU và RAM của tôi. Đây là một vấn đề lớn, vì tôi chạy các ứng dụng tự lưu trữ cùng với các thử nghiệm máy ảo, và việc triển khai Docker bên trong một máy ảo riêng biệt sẽ tiêu tốn quá nhiều tài nguyên trên chiếc máy tính vốn đã thiếu thốn của tôi.

Giao diện Portainer hiển thị danh sách các hình ảnh Docker, minh họa quản lý container Docker trên Proxmox LXC.Giao diện Portainer hiển thị danh sách các hình ảnh Docker, minh họa quản lý container Docker trên Proxmox LXC.

Hóa ra, LXC là giải pháp thay thế hoàn hảo cho bài toán hiệu suất này. Chắc chắn, các container có thể không cung cấp lợi thế bảo mật tương tự như các máy ảo, nhưng LXC nhẹ hơn rất nhiều, khiến chúng phù hợp hơn cho các hệ thống cũ. Để dễ hình dung, chiếc laptop bình dân mười năm tuổi của tôi hầu như không thể chạy một máy ảo có giao diện đồ họa, nhưng nó có thể cung cấp năng lượng cho hàng chục container một cách mượt mà. Do đó, thiết lập Docker dựa trên LXC là hoàn hảo cho các thiết bị công suất thấp của tôi, đặc biệt là trong những cấu hình mà tôi muốn giữ mức sử dụng tài nguyên ở mức tối thiểu.

Hướng dẫn triển khai Docker bên trong LXC trên Proxmox

Hai cách để tạo Docker LXC: Nhanh chóng hoặc Tùy chỉnh

Cũng như mọi dự án home lab, có nhiều cách để tạo một LXC dựa trên Docker trên Proxmox. Cách dễ dàng hơn là sử dụng kho lưu trữ Proxmox VE Helper-Scripts – hay cụ thể hơn là script Docker – để khởi tạo một LXC dành riêng cho môi trường chạy container này. Chạy script này đơn giản chỉ bằng cách thực thi lệnh bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/docker.sh)" trong tab Shell của máy chủ Proxmox của bạn. Tuy nhiên, tôi khuyên bạn nên cấu hình LXC thủ công bằng cách chọn Advanced options.

Việc chọn Default options sẽ cấp phát 2 v-core, 2GB bộ nhớ và 4GB lưu trữ cho LXC. Tùy thuộc vào khối lượng công việc của bạn, bạn sẽ nhanh chóng nhận thấy mình hết tài nguyên hệ thống, đặc biệt là không gian đĩa. Vì vậy, tốt hơn hết là bạn nên sửa đổi các tài nguyên được gán cho LXC của mình. Ngoài ra còn có lựa chọn giữa container có đặc quyền (privileged) và không đặc quyền (unprivileged), mà tôi sẽ đề cập chi tiết hơn sau. Tôi khuyên bạn nên bật Portainer trong quá trình thiết lập LXC, vì nó giúp việc quản lý container trở nên cực kỳ dễ dàng.

Thay vào đó, nếu bạn muốn một trải nghiệm tùy chỉnh hơn, bạn có thể tự xây dựng Docker LXC từ đầu. Tôi thích sử dụng template Debian TurnKey, nhưng bạn cũng sẽ tìm thấy các gói Ubuntu, Alpine, Fedora, Arch Linux và các gói tzst dựng sẵn khác trong tab CT Templates bên trong volume local. Khi bạn tạo một container qua trình hướng dẫn tạo LXC, hãy nhớ gán DHCP (hoặc một địa chỉ IP tĩnh, nếu bạn muốn) cho nó.

Một khi node Proxmox của bạn đã triển khai LXC, bạn có thể thực hiện lệnh apt update && apt upgrade -y trước khi cài đặt tiện ích curl bằng cách chạy apt install curl -y trong tab Console. Để thiết lập Docker, chỉ cần dán đoạn mã sau vào terminal và đợi script cài đặt môi trường container và các gói cần thiết:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Lựa chọn giữa LXC có đặc quyền (Privileged) và không đặc quyền (Unprivileged)

Bất kể phương pháp bạn đã sử dụng để triển khai LXC, bạn sẽ phải quyết định xem đó là một container có đặc quyền hay không đặc quyền. Loại sau là lựa chọn an toàn hơn, vì UID 0 (root) của container được ánh xạ tới một người dùng không đặc quyền trên node PVE. Bằng cách đó, bạn sẽ không phải lo lắng về việc leo thang đặc quyền.

Giao diện Proxmox khi tạo Docker LXC, lựa chọn cấu hình container có đặc quyền (privileged) hoặc không đặc quyền (unprivileged).Giao diện Proxmox khi tạo Docker LXC, lựa chọn cấu hình container có đặc quyền (privileged) hoặc không đặc quyền (unprivileged).

Thật không may, việc thiết lập chia sẻ mạng bên trong các LXC không đặc quyền có thể gặp một chút vấn đề. Nếu bạn đang có kế hoạch kết nối các ổ đĩa CIFS/NFS với Docker LXC của mình, bạn có thể muốn chọn một container có đặc quyền. Nhưng vì các LXC này ánh xạ UID 0 của container sang UID 0 của máy chủ Proxmox, bạn sẽ phải đối mặt với rủi ro bảo mật cao hơn.

Những hạn chế cần cân nhắc khi sử dụng Docker trong LXC

Không phải lúc nào cũng là giải pháp tối ưu

Mặc dù cấu hình Docker dựa trên LXC là phù hợp cho các hệ thống quá tải khi chạy máy ảo, nhưng việc thiết lập container-trong-container này cũng có những vấn đề riêng. Trước hết, các bản cập nhật Proxmox có thể làm hỏng các Docker LXC. Chúng cũng không an toàn bằng các máy ảo, và mặc dù tôi chưa gặp vấn đề về độ ổn định nào, nhưng tôi đã nghe rất nhiều câu chuyện kinh hoàng về việc Docker LXC gặp sự cố bất ngờ.

Hình ảnh một máy tính cũ đang chạy Proxmox, thể hiện khả năng tái sử dụng phần cứng cho các giải pháp ảo hóa và Docker LXC.Hình ảnh một máy tính cũ đang chạy Proxmox, thể hiện khả năng tái sử dụng phần cứng cho các giải pháp ảo hóa và Docker LXC.

Vì vậy, nếu bạn đang sử dụng một máy chủ cao cấp, tốt hơn hết là nên chạy Docker bên trong một máy ảo. Nhưng đối với những người có thiết bị cấu hình yếu, không có hại gì khi duy trì thiết lập dựa trên LXC.

Tóm lại, việc chạy Docker trong LXC trên Proxmox mang lại lợi ích đáng kể cho người dùng có phần cứng cũ, giúp tối ưu hóa tài nguyên và tăng cường khả năng sử dụng thiết bị. Tuy nhiên, điều quan trọng là phải cân nhắc kỹ lưỡng giữa lợi ích về hiệu suất và những rủi ro tiềm ẩn về bảo mật và độ ổn định. Lựa chọn giữa LXC có đặc quyền và không đặc quyền cũng cần được xem xét dựa trên nhu cầu cụ thể của bạn về chia sẻ mạng và mức độ chấp nhận rủi ro.

Bạn đã từng thử nghiệm chạy Docker trong LXC trên Proxmox chưa? Hãy chia sẻ kinh nghiệm và những mẹo hữu ích của bạn trong phần bình luận bên dưới nhé!

Related posts

Thư Viện Game Hợp Nhất Trên Ứng Dụng Xbox PC: Nỗ Lực Đáng Thất Vọng Của Microsoft

Administrator

Nvidia RTX 50 Series Bị Thiếu ROPs: Vấn Đề Nghiêm Trọng Hơn Bạn Nghĩ

Administrator

Nhược điểm Arc Browser: Những Lý Do Khiến Tôi Cân Nhắc Từ Bỏ

Administrator

Màn hình Gaming Alienware AW3225QF: Nâng Tầm Trải Nghiệm QD-OLED 4K 240Hz

Administrator

Nâng Tầm Năng Suất: Các Phần Mềm Quản Lý Clipboard Tốt Nhất cho Windows

Administrator

Tại Sao Picsart Vượt Trội Hơn Adobe Express Cho Trải Nghiệm Thiết Kế Trực Tuyến?

Administrator