Là một công cụ cho lập trình viên, 89luca89/distrobox đã đạt 12.9k sao trên GitHub, ngôn ngữ Go. Use any linux distribution inside your terminal. Enable both backward and forward compatibility with software and freedom to use whatever distribution you’re more comfortable with. Mirror available at: https://gitlab.com/89luca89/distrobox
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
previous logo credits j4ckr3d
current logo credits David Lapshin
Use any Linux distribution inside your terminal. Enable both backward and forward
compatibility with software and freedom to use whatever distribution you’re more
comfortable with.
Distrobox uses podman, docker or
lilipod to create containers using the Linux distribution
of your choice.
The created container will be tightly integrated with the host, allowing sharing
of the HOME directory of the user, external storage, external USB devices and
graphical apps (X11/Wayland), and audio.
Documentation -
Matrix Room -
Telegram Group
[!WARNING]
Documentation on GitHub strictly refers to the code in the main branch. For the official documentation
Head over https://distrobox.it
Distrobox
What it does
See it in action
Why?
Aims
Security implications
Quick Start
Assemble Distrobox
Configure Distrobox
Installation
Building from source
Dependencies
Install Podman without root
Compatibility
Supported container managers
Host Distros
Install on the Steamdeck
Containers Distros
Usage
Outside the distrobox
distrobox-assemble
distrobox-create
distrobox-enter
distrobox-ephemeral
distrobox-generate-entry
distrobox-list
distrobox-rm
distrobox-stop
distrobox-upgrade
Inside the distrobox
distrobox-export
distrobox-host-exec
distrobox-init
Configure distrobox
Useful tips
Launch a distrobox from your applications list
Create a distrobox with a custom HOME directory
Mount additional volumes in a distrobox
Use a different shell than the host
Run the container with real root
Run Debian/Ubuntu container behind proxy
Using a command other than sudo to run a rootful container
Duplicate an existing distrobox
Export to the host
Execute commands on the host
Resolve "Error cannot open display: :0"
Enable SSH X-Forwarding when SSH-ing in a distrobox
Using init system inside a distrobox
Using Docker inside a Distrobox
Using Podman inside a Distrobox
Using LXC inside a Distrobox
Using Waydroid inside a Distrobox
Manual Installation
Automated Installation
Using host's Podman or Docker inside a Distrobox
Using distrobox as main cli
Using a different architecture
Using the GPU inside the container
Using nvidia-container-toolkit
Slow creation on podman and image size getting bigger with distrobox create
Container save and restore
Check used resources
Pre-installing additional package repositories
Apply resource limitation on the fly
Posts
Announcing the next generation of Distrobox
Distrobox Next architecture
Create a dedicated distrobox container
Execute a command on the Host
Install Podman in HOME
Install Lilipod in HOME
Install on Steamdeck
Integrate VSCode and Distrobox
Run Libvirt using distrobox
Run latest GNOME and KDE Plasma using distrobox
Featured Articles
Articles
Run Distrobox on Fedora Linux - Fedora Magazine
DistroBox – Run Any Linux Distribution Inside Linux Terminal - TecMint
Distrobox: Try Multiple Linux Distributions via the Terminal - It's FOSS
Distrobox - How to quickly deploy a Linux distribution with GUI applications via a container
Using Distrobox To Augment The Package Selection On Clear Linux - Phoronix
Benchmark: benefits of Clear Linux containers (distrobox) - Phoronix
Distrobox - A great item in the Linux toolbelt - phmurphy's blog
Distrobox: Run (pretty much) any Linux distro under almost any other - TheRegister
Day-to-day differences between Fedora Silverblue and Ubuntu - castrojo's blog
Distrobox is Awesome - Running Window Manager and Desktop environments using Distrobox
Japanese input on Clear Linux with Mozc via Ubuntu container with Distrobox
MID (MaXX Interactive Desktop) on Clear Linux via Ubuntu container with Distrobox
Running Other Linux Distros with Distrobox on Fedora Linux - bandithijo's blog
Talks and Videos
Linux App Summit 2022 - Distrobox: Run Any App On Any Distro - BoF
Opensource Summit 2022 - Distrobox: Run Any App On Any Distro
A "Box" Full of Tools and Distros - Dario Faggioli @ OpenSUSE Conference 2022
Podman Community Meeting October 4, 2022
Distrobox opens the Steam Deck to a whole new world (GUIDE) - GamingOnLinux
CERN - Containerization as a means of extending the lifetime of HDL development tools
How to Code with Distrobox on the Steam Deck
Why you should be running the MicroOS Desktop
Podcasts
What it does
Simply put it's a fancy wrapper around podman, docker, or lilipod to create and start
containers which are highly integrated with the hosts.
The distrobox environment is based on an OCI image.
This image is used to create a container that seamlessly integrates with the
rest of the operating system by providing access to the user's home directory,
the Wayland and X11 sockets, networking, removable devices (like USB sticks),
systemd journal, SSH agent, D-Bus,
ulimits, /dev and the udev database, etc...
It implements the same concepts introduced by https://github.com/containers/toolbox,
keeping integration and broad host compatibility as primary goals.
All the props go to them as they had the great idea to implement this stuff.
distrobox is shipped as a single binary providing the following subcommands:
distrobox assemble – create and destroy containers based on a config file
distrobox create – create a container
distrobox enter – enter a container
distrobox ephemeral – create a temporary container, destroy it when exiting the shell
distrobox list (alias: ls) – list containers created with distrobox
distrobox rm – delete a container created with distrobox
distrobox stop – stop a running container created with distrobox
distrobox upgrade – upgrade one or more containers created with distrobox at once
distrobox generate-entry – create an entry of a created container in the applications list
Plus three helpers that run inside the container:
distrobox-init – container entrypoint (not meant to be invoked manually)
distrobox-export – export apps and services from the container to the host
distrobox-host-exec – run commands/programs from the host while inside the container
Please check the usage docs and see some handy tips on how to use it.
See it in action
Thanks to castrojo, you can see Distrobox in
action in this explanatory video on his setup with Distrobox, Toolbx,
Fedora Silverblue for the uBlue project
(check it out!)
Why
Provide a mutable environment on an immutable OS, like ChromeOS, Endless OS,
Fedora Atomic Desktops (e.g. Silverblue), OpenSUSE Aeon/Kalpa, Vanilla OS, or SteamOS3
Provide a locally privileged environment for sudoless setups
(e.g. company-provided laptops, security reasons, etc...)
To mix and match a stable base system (e.g. Debian Stable, Ubuntu LTS, Red Hat)
with a bleeding-edge environment for development or gaming
(e.g. Arch, OpenSUSE Tumbleweed, or Fedora with the latest Mesa)
Leverage a high abundance of curated distro images for docker/podman to
manage multiple environments.
Refer to the compatibility list for an overview of the supported host distros
HERE and container's distro HERE.
Aims
This project aims to bring any distro userland to any other distro
supporting podman, docker, or lilipod.
It is implemented as a single statically-linked Go binary, while the in-container
helpers remain POSIX shell so they keep working on any distro the binary can run.
Refer HERE for a list of
supported container managers and minimum supported versions.
It also aims to enter the container as fast as possible, every millisecond
adds up if you use the container as your default environment for your terminal:
These are some sample results of distrobox enter on the same container on my
weak laptop:
~$ hyperfine --warmup 3 --runs 100 "distrobox enter bench -- whoami"
Benchmark 1: distrobox enter bench -- whoami
Time (mean ± σ): 395.6 ms ± 10.5 ms [User: 167.4 ms, System: 62.4 ms]
Range (min … max): 297.3 ms … 408.9 ms 100 runs
Security implications
Isolation and sandboxing are not the main aims of the project, on the contrary
it aims to tightly integrate the container with the host.
The container will have complete access to your home, pen drive, and so on,
so do not expect it to be highly sandboxed like a plain
docker/podman container or a Flatpak.
⚠️ BE CAREFUL:⚠️ if you use docker, or you use podman/lilipod with the --root/-r flag,
the containers will run as root, so root inside the rootful container can modify
system stuff outside the container,
Be also aware that In rootful mode, you'll be asked to set up the user's password, this will
ensure at least that the container is not a passwordless gate to root,
but if you have security concerns for this, use podman or lilipod that runs in rootless mode.
Rootless docker is still not working as intended and will be included in the future
when it will be complete.
That said, it is useful to read the discussion about decoupling with the host,
available here: #28 Sandboxed mode.
If you are looking for something similar to Distrobox but with sandboxing capabilities,
there are other options to consider which do prioritise isolation such as Litterbox.
Quick Start
Create a new distrobox:
distrobox create -n test
Create a new distrobox with Systemd (acts similar to an LXC):
Note — configuration files are parsed as INI, not sourced as shell.
The original shell distrobox sourceddistrobox.conf and ${HOME}/.distroboxrc,
so they could contain arbitrary shell (variable expansion, command substitution,
conditionals, export, etc.). The new Go implementation instead reads them as plain
key=value (INI) files. As a consequence:
Values are taken literally: container_user_custom_home="$HOME/..." and
PATH="$PATH:..." are not expanded — use absolute paths. The $HOME/$PATH
entries in the example above illustrate the old sourcing behavior and will not
be expanded here.
Arbitrary shell logic in .distroboxrc is not executed; only recognized
key=value settings take effect.
The reference key distrobox_sudo_program is accepted (mapped onto
sudo_program).
Alternatively, it is possible to specify preferences using ENV variables:
DBX_CONTAINER_ALWAYS_PULL
DBX_CONTAINER_CUSTOM_HOME
DBX_CONTAINER_IMAGE
DBX_CONTAINER_MANAGER
DBX_CONTAINER_NAME
DBX_CONTAINER_ENTRY
DBX_NON_INTERACTIVE
DBX_SKIP_WORKDIR
Installation
Distrobox is packaged in the following distributions, if your distribution is
on this list, you can refer to your repos for installation:
Thanks to the maintainers for their work: M0Rf30,
alcir, dfaggioli,
AtilaSaraiva, michel-slm
Building from source
To build distrobox from source, you need Go >= 1.25 and make.
Clone the repository and build:
git clone https://github.com/89luca89/distrobox.git
cd distrobox
make build
Then install:
sudo make install
This installs the distrobox binary to /usr/local/bin by default.
For a local install without sudo:
make install PREFIX=~/.local
[!WARNING]
Make sure the destination directory is in your PATH.
To uninstall, run make uninstall with the same PREFIX used during installation.
Standalone install script
The install and uninstall scripts at the repository root work without a
local checkout. They download distrobox from GitHub and deploy it to a
prefix.
The script defaults to the v1 stable line (recommended for production).
Pass --v2 to install the v2 Go release candidate instead; the script
also picks the v2 path automatically if --version points at a 2.x tag.
# v1 (default) — latest stable
curl -fsSL https://raw.githubusercontent.com/89luca89/distrobox/legacy/install | sh
# v2 — Go release candidate
curl -fsSL https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --v2
The same flags (--prefix, --version, --no-color, --verbose) work in
both modes. The companion ./uninstall script removes whatever was
installed, regardless of version.
Check the Host Distros compatibility list for
distro-specific instructions.
Dependencies
Distrobox depends on a container manager to work, you can choose to install
either podman, docker or lilipod.
Please look in the Compatibility Table for your
distribution notes.
There are ways to install
Podman without root privileges and in home. Or
Lilipod without root privileges and in home.
This should play well with completely sudoless setups and with devices like the Steam Deck (SteamOS).
This artwork uses Cardboard Box model by J0Y
licensed under Creative Commons Attribution 4.0
This artwork uses GTK Loop Animation
by GNOME Project
licensed under Creative Commons Attribution-ShareAlike 3.0
as a pre-configured scene
Có — 89luca89/distrobox phát hành theo license GPL-3.0, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/89luca89/distrobox.
89luca89/distrobox có trang demo không?
Dự án có trang chủ ở https://distrobox.it/. Tab "Readme" ở trang này thường có ảnh chụp và hướng dẫn bắt đầu nhanh.
89luca89/distrobox dùng license gì?
89luca89/distrobox phát hành theo license GPL-3.0. Nên mở file LICENSE trên GitHub để xác nhận — license metadata đôi khi lệch với thực tế dự án.
89luca89/distrobox là gì?
89luca89/distrobox (89luca89/distrobox) là dự án Go trên GitHub. Theo mô tả gốc: Use any linux distribution inside your terminal. Enable both backward and forward compatibility with software and freedom to use whatever distribution you’re more comfortable with. Mirror available at: https://gitlab.com/89luca89/distrobox
Cùng nhóm Developer Tools còn repo nào?
89luca89/distrobox thuộc nhóm Developer Tools trên TopGit, cùng 20 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về 89luca89/distrobox ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/89luca89/distrobox là nguồn chính thức.
Vì sao 89luca89/distrobox được xếp vào nhóm Developer Tools?
TopGit xếp 89luca89/distrobox vào nhóm Developer Tools dựa trên GitHub topics và mô tả của repo (gắn thẻ: "almalinux", "alpine", "archlinux"). Việc phân loại dựa trên metadata thật của repo, không phải đoán theo cảm tính biên tập.
Đọc đầy đủ README ở tab phía trên.
distrobox có đáng để bạn bỏ thời gian?
ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về distrobox.