Image default
Máy Tính

Distrobox là gì? Hướng dẫn toàn diện cách quản lý ứng dụng đa phân phối Linux hiệu quả

Bạn có thường xuyên gặp phải tình huống một ứng dụng hay ho lại không có sẵn cho bản phân phối Linux mà bạn đang sử dụng không? Thông thường, bạn sẽ tìm cách cài đặt nó qua Brew, Flatpak hoặc Snap, nhưng không phải lúc nào cũng thành công.

Thực trạng phân mảnh trong hệ sinh thái quản lý gói ứng dụng trên Linux là một vấn đề nhức nhối. Một số bản phân phối chia sẻ định dạng gói chung nhưng thường không tương thích, trong khi những bản khác lại sử dụng hệ thống đóng gói hoàn toàn khác biệt. Flatpak và Snap đã nỗ lực giải quyết vấn đề này, nhưng đôi khi chúng chỉ tạo ra thêm các tiêu chuẩn mới. Thay vì liên tục tạo ra các tiêu chuẩn mới, điều chúng ta cần làm là kết hợp các tiêu chuẩn hiện có – và đó chính là lúc Distrobox xuất hiện. Bài viết này sẽ đi sâu vào Distrobox, giải thích cách thức hoạt động, lý do nên sử dụng, và cung cấp hướng dẫn chi tiết để bạn có thể tận dụng tối đa công cụ mạnh mẽ này trên hệ điều hành Linux của mình.

Nền tảng công nghệ của Distrobox: Docker và Podman

Trước khi đi sâu vào Distrobox, điều quan trọng là phải hiểu rõ một số phần mềm nền tảng mà nó dựa vào: DockerPodman. Docker là một chương trình phần mềm giúp cô lập các tiến trình vào các container riêng biệt; các tiến trình này thường không thể tương tác với hệ thống bên ngoài container. Các container được xây dựng dựa trên các nguyên thủy của Linux như namespaces và control groups. Tuy nhiên, bạn không cần phải quá lo lắng về các chi tiết kỹ thuật phức tạp đó; chỉ cần nhớ rằng một container có nhiệm vụ cô lập các tiến trình.

Chúng ta gọi Docker là một container runtime. Podman là một container runtime khác có giao diện và cách hoạt động gần như tương tự Docker, nhưng có một điểm khác biệt then chốt: Podman không (mặc định) chạy các container dưới quyền root; đây là một chi tiết quan trọng mà bạn sẽ sớm nhận ra. Docker và Podman gần như giống hệt nhau, vì vậy bạn có thể tham khảo một hướng dẫn dành cho người mới bắt đầu về Docker và áp dụng hầu hết mọi thứ cho Podman.

Distrobox hoạt động như thế nào?

Distrobox làm mờ ranh giới giữa các bản phân phối và tận dụng các công cụ hiện có để cài đặt các gói ứng dụng xuyên bản phân phối. Distrobox bao bọc runtime container mà bạn đã chọn (ví dụ: Podman, Docker hoặc Lilypod) để chạy các tiến trình bên trong một container. Khi bạn thực thi một lệnh Distrobox, nó sẽ ủy quyền cho container runtime bên dưới.

Nhưng tại sao lại như vậy? Không giống như Docker, Podman, v.v., Distrobox tích hợp chặt chẽ các tiến trình container hóa với hệ thống của bạn; chúng có thể đọc thư mục home của bạn, thấy các tiến trình khác và thậm chí giao tiếp với chúng. Distrobox sẽ đảm nhiệm việc cấu hình container phức tạp cho bạn, để nó có thể chạy các ứng dụng – trong một container Docker hoặc Podman – một cách liền mạch với hệ thống host.

Giao diện terminal Linux hiển thị danh sách các container Distrobox đã tạo, minh họa khả năng quản lý môi trường đa phân phối.Giao diện terminal Linux hiển thị danh sách các container Distrobox đã tạo, minh họa khả năng quản lý môi trường đa phân phối.

Mục tiêu của một container runtime là cô lập tiến trình; mục tiêu của Distrobox là tích hợp chặt chẽ với ít cấu hình.

Tài liệu chính thức của Distrobox làm rõ khái niệm “tích hợp chặt chẽ” với các chi tiết kỹ thuật như sau:
“…tích hợp liền mạch với phần còn lại của hệ điều hành bằng cách cung cấp quyền truy cập vào thư mục home của người dùng, các socket Wayland và X11, mạng, thiết bị có thể tháo rời (như USB), nhật ký hệ thốngd, SSH agent, D-Bus, ulimits, /dev và cơ sở dữ liệu udev, v.v…”

Tại sao nên chọn Podman thay vì Docker?

Bạn nên sử dụng Podman làm container runtime của mình vì, theo mặc định, nó chạy các container dưới dạng người dùng không có đặc quyền, trong khi Docker chạy chúng dưới quyền root. Tại sao điều đó lại là một vấn đề? Các tiến trình trong container kế thừa các đặc quyền của container đó – mặc dù phức tạp hơn một chút, nhưng đó là ý tưởng chung. Distrobox tích hợp chặt chẽ các container với hệ thống host; bất kỳ tiến trình nào chạy bên trong một container rootful (chạy dưới quyền root) đều có thể có toàn quyền truy cập vào hệ thống của bạn.

Distrobox sẽ nhắc bạn đặt mật khẩu cho một container nếu bạn chạy nó dưới quyền root, điều này cung cấp một mức độ bảo vệ nhất định, nhưng nó không phải là một giải pháp hoàn hảo. Vì vậy, để đảm bảo an toàn tối đa cho hệ thống, Podman với chế độ rootless (không cần quyền root) là lựa chọn được khuyến nghị.

Cách cài đặt Podman trên Linux

Podman có sẵn cho ít nhất hàng chục bản phân phối khác nhau. Các lệnh sau đây áp dụng cho các bản phổ biến nhất:

Đối với Debian và các dẫn xuất của nó (ví dụ: Ubuntu, Mint, v.v.):

sudo apt-get install podman

Đối với các dẫn xuất của Red Hat (ví dụ: Fedora, v.v.):

sudo dnf install podman

Đối với Arch Linux và các dẫn xuất của nó:

sudo pacman -S podman

Bạn có thể sẽ thấy Podman có sẵn trong các kho lưu trữ mặc định của bản phân phối của mình. Điều quan trọng nhất là bạn phải cấu hình nó cho chế độ rootless. Thật không may, đối với một số bản phân phối, việc này có thể yêu cầu cấu hình thủ công. Hãy tham khảo hướng dẫn sử dụng của bản phân phối của bạn vì quy trình này khác nhau tùy thuộc vào mỗi bản.

Cách cài đặt Distrobox trên Linux

Distrobox có sẵn cho hơn 30 bản phân phối, vì vậy sau khi bạn đã cài đặt Podman (hoặc Docker), hãy tiến hành cài đặt Distrobox bằng trình quản lý gói của bản phân phối của bạn. Dưới đây là các lệnh cài đặt cho các bản phân phối phổ biến nhất:

Đối với Debian và các dẫn xuất của nó (ví dụ: Ubuntu, Mint, v.v.):

sudo apt-get install distrobox

Đối với các dẫn xuất của Red Hat (ví dụ: Fedora, v.v.):

sudo dnf install distrobox

Đối với Arch Linux và các dẫn xuất của nó:

sudo pacman -S distrobox

Nếu Distrobox không có trong kho lưu trữ của bản phân phối của bạn, bạn có thể sử dụng lệnh curl sau:

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh

Lưu ý: Các hành động như curl … | sh có thể chứa và chèn các lệnh độc hại; hãy luôn xác nhận nhà cung cấp và xem xét kịch bản trước khi thực thi.

Bây giờ bạn phải đặt Podman làm container runtime trong tệp cấu hình Distrobox. Chạy lệnh sau, nhưng hãy cẩn thận rằng nó sẽ ghi đè lên bất kỳ tệp cấu hình hiện có nào:

echo 'container_manager="podman"' > ~/.distroboxrc

Vậy là bạn đã sẵn sàng.

Tạo container Distrobox đầu tiên của bạn

Các container lưu trữ các thay đổi của bạn và chúng là một lớp mỏng trên các image bất biến. Các image cung cấp hệ thống cơ sở của bản phân phối. Khi kết hợp, chúng tạo thành một hệ thống hoàn chỉnh. Các gói đã cài đặt của bạn sẽ nằm bên trong một container. Distrobox tích hợp thư mục home của container vào thư mục home của bạn, sao cho các tệp cấu hình gói của bạn sẽ nằm ở đó.

Khi bạn chạy lệnh sau, nó sẽ tạo một container từ image mặc định:

distrobox create -n my-container

Tuy nhiên, trong suốt bài viết này, chúng ta sẽ sử dụng Arch Linux làm ví dụ:

distrobox create --name my-arch --image archlinux:latest

Cửa sổ terminal Linux hiển thị lệnh `distrobox create` và quá trình tạo container Arch Linux, minh họa cách thiết lập môi trường ảo hóa.Cửa sổ terminal Linux hiển thị lệnh `distrobox create` và quá trình tạo container Arch Linux, minh họa cách thiết lập môi trường ảo hóa.

Bạn có thể tạo một container bằng bất kỳ image nào bạn muốn – ví dụ, Debian:

distrobox create --name my-debian --image debian:latest

Hoặc bạn có thể tạo một container Fedora:

distrobox create --name my-fedora --image fedora:latest

Lưu ý: Đừng ngắt quá trình tạo container; nếu không, nó có thể bị hỏng và bạn sẽ cần tạo lại.

Distrobox hỗ trợ hơn 30 bản phân phối cho các container, mỗi bản hỗ trợ nhiều bản phát hành và phiên bản. Ngoài ra, nếu bạn đã quen thuộc với Toolbox, bạn cũng có thể sử dụng các image của chúng. Distrobox duy trì một danh sách lớn các tên image để thuận tiện cho bạn trên trang web chính thức của họ.

Cách cài đặt ứng dụng trong container Distrobox

Các container là một môi trường mà bạn kích hoạt. Tất cả các lệnh tiếp theo sẽ thực thi bên trong container.

distrobox enter my-arch

Bạn có thể thử nghiệm với hệ thống này để làm quen. Khi hoàn tất, hãy gõ exit.

Giao diện dòng lệnh terminal Linux hiển thị lệnh `distrobox enter` để truy cập vào container Arch Linux, thể hiện bước kích hoạt môi trường container.Giao diện dòng lệnh terminal Linux hiển thị lệnh `distrobox enter` để truy cập vào container Arch Linux, thể hiện bước kích hoạt môi trường container.

Tuy nhiên, thay vì phải vào một container để cài đặt một gói, thường thì tốt hơn là chạy một lệnh một lần (one-shot command). Ở đây chúng ta sẽ cài đặt Firefox, mà chúng ta sẽ chạy sau một chút:

distrobox enter my-arch -- sudo pacman -S firefox

Terminal Linux hiển thị lệnh cài đặt trình duyệt Firefox vào container Arch Linux bằng Distrobox, minh họa quá trình quản lý gói ứng dụng.Terminal Linux hiển thị lệnh cài đặt trình duyệt Firefox vào container Arch Linux bằng Distrobox, minh họa quá trình quản lý gói ứng dụng.

Nếu bạn đã tạo một container cho một bản phân phối khác, bạn có thể sử dụng một trong các lệnh sau:

Đối với Debian và các dẫn xuất của nó (ví dụ: Ubuntu, Mint, v.v.):

distrobox enter my-container-name -- sudo apt-get install firefox

Đối với các dẫn xuất của Red Hat (ví dụ: Fedora, v.v.):

distrobox enter my-container-name -- sudo dnf install firefox

Lưu ý: Khi sử dụng Podman, sudo vẫn hoạt động bình thường. Podman Rootless chạy các container dưới dạng người dùng không có đặc quyền theo mặc định. Tất cả các tiến trình bên trong container (bao gồm cả sudo) không thể có được đặc quyền cao hơn container đó. Điều này bảo vệ hệ thống host của bạn.

Cách chạy ứng dụng từ container Distrobox

Để chạy Firefox mới cài đặt của bạn, hãy chạy:

distrobox enter my-arch -- firefox

Trình duyệt Firefox đang chạy song song với terminal Linux, minh họa cách khởi chạy ứng dụng đồ họa từ container Distrobox Arch Linux trên hệ thống host.Trình duyệt Firefox đang chạy song song với terminal Linux, minh họa cách khởi chạy ứng dụng đồ họa từ container Distrobox Arch Linux trên hệ thống host.

Lệnh trước đó không trả lại quyền kiểm soát cho terminal cho đến khi Firefox thoát; nó cũng khá dài. Thay vào đó, bạn nên sử dụng một alias. Trong tệp cấu hình shell của bạn, hãy nhập:

alias firefox="distrobox enter my-arch -- nohup firefox >/dev/null"

Bạn có thể đặt tên alias này tùy ý.

Một trong những tính năng hữu ích nhất của Distrobox là các gói đồ họa hoạt động mà không cần cấu hình bổ sung. Nó hoạt động với cả X11 hoặc Wayland. Distrobox cũng hỗ trợ tăng tốc GPU; nếu bạn quan tâm đến điều đó, bạn nên tham khảo hướng dẫn sử dụng Distrobox.

Hiểu về các container Distrobox

Như đã đề cập trước đó, các container là một lớp trên một image. Distrobox chia sẻ các image giữa nhiều container. Ví dụ, khi bạn tạo một container dựa trên Debian:

distrobox create --name deb-1 --image debian:latest

Nó sẽ tải xuống một image Debian, sử dụng nó làm hệ thống cơ sở, và sau đó tạo một container trên đó. Khi bạn tạo thêm hai container nữa:

distrobox create --name deb-2 --image debian:latest
distrobox create --name deb-3 --image debian:latest

Cả hai container này sẽ sử dụng cùng một image Debian bất biến, nhưng mỗi container là riêng biệt. Việc cài đặt một gói vào deb-1 có nghĩa là nó sẽ không tồn tại trong deb-2 hoặc deb-3. Tuy nhiên, chúng sẽ chia sẻ cùng một tệp cấu hình, nằm trong thư mục home của hệ thống host của bạn.

Bạn có thể tự hỏi liệu nên tạo một container hay nhiều container. Nhìn chung, hãy tạo một container cho mỗi bản phân phối bạn sử dụng. Ví dụ, có một gói trong AUR (kho phần mềm do cộng đồng duy trì cho Arch Linux) mà bạn muốn, vì vậy bạn tạo một container Arch; có ba gói trong kho Debian, vì vậy bạn tạo một container Debian duy nhất và đặt cả ba gói vào đó. Tuy nhiên, có thể có các kịch bản xảy ra xung đột phần mềm – ví dụ: các phiên bản khác nhau của cùng một gói; đây là một kịch bản lý tưởng để tạo các container riêng biệt.

Các lệnh Distrobox hữu ích khác

Tài nguyên hữu ích nhất cho các lệnh luôn là menu ––help:

distrobox --help

Bạn có thể nhận trợ giúp về các lệnh cụ thể bằng cách thêm cờ --help vào đó. Ví dụ, để nhận trợ giúp cho lệnh create:

distrobox create --help

Tạo container tạm thời

Để kiểm tra nhanh một điều gì đó, bạn có thể sử dụng các container tạm thời. Distrobox sẽ tự động hủy chúng sau khi hoàn thành:

distrobox ephemeral

Lưu ý rằng các container này khởi động chậm hơn vì chúng phải khởi tạo – tương tự như việc tạo một container mới.
Tham khảo distrobox ephemeral --help để biết thêm các tùy chọn.

Quản lý container

Bạn nên coi các container Distrobox như một hệ thống con; điều này bao gồm việc tạo, khởi động, dừng, xóa, cập nhật và duy trì chung các container. Dưới đây là danh sách các lệnh phổ biến giúp bạn thực hiện điều này.

Tại một thời điểm nào đó, bạn sẽ muốn biết có những container nào tồn tại trên hệ thống của mình:

distrobox ls

Có lẽ bạn muốn xóa một container. Trước khi làm điều đó, bạn có thể muốn dừng nó trước, sau đó xóa nó:

distrobox stop my-container
distrobox rm my-container

Giao diện terminal Linux hiển thị các lệnh để dừng và xóa container Distrobox, mô tả các thao tác quản lý vòng đời container.Giao diện terminal Linux hiển thị các lệnh để dừng và xóa container Distrobox, mô tả các thao tác quản lý vòng đời container.

Không nhất thiết phải dừng một container trước khi xóa nó, vì Distrobox sẽ nhắc bạn buộc xóa nếu nó đang chạy.

Bạn gần như chắc chắn muốn giữ cho các container của mình được cập nhật. Để cập nhật tất cả chúng, hãy sử dụng:

distrobox upgrade --all

Hoặc để cập nhật một container cụ thể:

distrobox upgrade my-container

Terminal Linux hiển thị lệnh `distrobox upgrade --all` để cập nhật đồng loạt tất cả các container Distrobox, giúp duy trì phần mềm luôn mới nhất.Terminal Linux hiển thị lệnh `distrobox upgrade –all` để cập nhật đồng loạt tất cả các container Distrobox, giúp duy trì phần mềm luôn mới nhất.

Lệnh upgrade sẽ sử dụng trình quản lý gói của container để cập nhật tất cả các gói của nó. Ngoài ra, mỗi container yêu cầu cập nhật thường xuyên. Khi bạn xóa một container, nó cũng sẽ xóa các bản cập nhật của nó.

Để gỡ cài đặt các gói, chỉ cần sử dụng trình quản lý gói cụ thể của bản phân phối cho container đó. Ví dụ, nếu bạn muốn gỡ cài đặt Firefox khỏi container Arch Linux mà chúng ta đã tạo trước đó, hãy sử dụng lệnh sau:

distrobox enter my-arch -- sudo pacman -R firefox

Terminal Linux hiển thị lệnh gỡ cài đặt trình duyệt Firefox khỏi container Distrobox Arch Linux, hoàn tất quá trình quản lý ứng dụng.Terminal Linux hiển thị lệnh gỡ cài đặt trình duyệt Firefox khỏi container Distrobox Arch Linux, hoàn tất quá trình quản lý ứng dụng.

Đối với các dẫn xuất của Red Hat (ví dụ: Fedora), hãy sử dụng:

distrobox enter my-conainer-name -- sudo dnf rm firefox

Đối với Debian và các dẫn xuất của nó, hãy sử dụng:

distrobox enter my-container-name -- sudo apt-get remove firefox

Cách gỡ cài đặt Distrobox

Nếu bạn không thích Distrobox và muốn gỡ bỏ nó, dưới đây là các lệnh để thực hiện.

Nếu bạn đã sử dụng curl để cài đặt nó, thì bạn phải sử dụng lệnh curl này để gỡ cài đặt nó:

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sudo sh

Nếu không, đối với Debian và các dẫn xuất của nó (ví dụ: Ubuntu, Mint, v.v.):

sudo apt-get remove distrobox

Đối với các dẫn xuất của Red Hat (ví dụ: Fedora, v.v.):

sudo dnf rm distrobox

Đối với Arch Linux và các dẫn xuất của nó:

sudo pacman -R distrobox

Kết luận

Distrobox nổi bật như một giải pháp mạnh mẽ để khắc phục sự phân mảnh trong quản lý gói ứng dụng trên Linux. Sức mạnh của nó nằm ở khả năng tích hợp chặt chẽ các môi trường container với hệ thống host, cho phép bạn tận hưởng sự đa dạng của các bản phân phối mà không cần phải cài đặt nhiều hệ điều hành hoặc sử dụng các giải pháp ảo hóa nặng nề.

Việc hiểu rõ cách Distrobox hoạt động, đặc biệt là sự khác biệt giữa nó và các container runtime như Docker hay Podman, là chìa khóa. Chúng tôi đặc biệt khuyến nghị sử dụng Podman với chế độ rootless (không cần quyền root) để tối ưu hóa bảo mật hệ thống của bạn. Bằng cách cẩn thận trong việc chạy container và quản lý quyền hạn, bạn có thể tận dụng tối đa Distrobox để tạo ra một môi trường làm việc linh hoạt và an toàn trên Linux.

Hãy bắt đầu trải nghiệm Distrobox ngay hôm nay để khám phá một cách tiếp cận mới trong việc quản lý phần mềm trên Linux. Bạn có bất kỳ câu hỏi hoặc kinh nghiệm nào muốn chia sẻ về Distrobox không? Hãy để lại bình luận bên dưới và cùng thảo luận với cộng đồng trithuccongnghe.net!

Related posts

Cách Biến Máy Tính Windows 11 Thành Loa Bluetooth: Hướng Dẫn Chi Tiết Từ A-Z

Administrator

PowerToys: 4 Tính Năng “Phải Có” Mà Microsoft Nên Tích Hợp Ngay Vào Windows

Administrator

Biến MacBook Thành Cỗ Máy Gaming Cổ Điển: Hướng Dẫn Chơi Game PC Huyền Thoại Trên macOS

Administrator