Distrobox 是什么?在终端里运行任意 Linux 发行版的工具
Distrobox 是一个在终端里使用任意 Linux 发行版的工具。它通过 podman、docker 或 lilipod 创建容器,但容器会与宿主系统紧密集成:共享用户的 HOME 目录、外部存储、外部 USB 设备、图形应用(X11/Wayland)和音频。如果你需要某个发行版才有的软件包,或者想在不重装系统的前提下切换开发环境,Distrobox 就是为这类场景准备的。
它解决什么问题
Linux 各发行版的软件包版本和可用性差异很大。有时你用的发行版没有某个软件的最新版,有时某个工具只在特定发行版上测试过。传统做法是装虚拟机或双系统,代价是资源占用高、文件共享麻烦、图形界面体验割裂。
Distrobox 的思路不同:容器负责提供目标发行版的软件环境,宿主负责提供硬件、桌面和用户数据。容器里的程序可以直接调用宿主的外设和显示服务,用起来接近原生。
核心机制
Distrobox 本身是一个命令行工具,底层依赖以下容器管理器之一:
- podman
- docker
- lilipod
创建容器时,你指定想要的发行版,Distrobox 会拉取对应镜像并完成集成配置。集成内容包括:
- 共享宿主用户的 HOME 目录
- 访问外部存储和 USB 设备
- 运行图形应用(X11/Wayland)
- 音频输出
这意味着你在容器里安装的编辑器、浏览器或开发工具,可以像宿主程序一样打开窗口、读写你的文件。
适合谁用
| 场景 | 是否适合 |
|---|---|
| 需要某发行版独有的软件包 | 适合 |
| 想测试不同发行版环境 | 适合 |
| 希望容器与桌面、外设无缝配合 | 适合 |
| 只需要隔离服务、不需要图形和 HOME 共享 | 用普通容器更直接 |
| 需要完整内核级隔离 | 虚拟机更合适 |
常用命令
Distrobox 的命令分为容器外和容器内两组。
容器外:
distrobox-create:创建容器distrobox-enter:进入容器distrobox-list:列出容器distrobox-stop:停止容器distrobox-rm:删除容器distrobox-upgrade:升级容器distrobox-assemble:按配置文件批量创建distrobox-ephemeral:创建临时容器distrobox-generate-entry:生成应用入口
容器内:
distrobox-export:把容器内的应用或命令导出到宿主distrobox-host-exec:在容器内执行宿主命令distrobox-init:容器初始化
安装与依赖
官方文档列出了几种安装方式:
- Curl 或 Wget
- Git
- 手动安装
- 自动化安装
依赖方面,需要先有可用的 podman 或 docker。文档还包含“Install Podman without root”一节,说明在无 root 权限时安装 Podman 的路径。
使用前需要知道
- 官方文档在 https://distrobox.it,GitHub 上的文档对应主分支代码,可能与正式版有差异。
- 兼容性部分列出了支持的容器管理器、宿主发行版,以及 Steamdeck 上的安装说明。
- 文档包含安全影响(Security implications)的讨论,涉及容器与宿主共享资源带来的边界问题。
- 卸载方式在 Uninstallation 一节。
常见问题
容器里的程序能打开窗口吗? 可以。Distrobox 支持 X11/Wayland 图形应用,也支持音频。
能访问 U 盘和移动硬盘吗? 可以,外部存储和 USB 设备对容器可见。
容器和宿主是同一个 HOME 吗? 默认共享用户 HOME 目录,因此文件在两个环境中都能直接访问。
必须用 podman 吗? 不是,docker 和 lilipod 也可以作为后端。
和虚拟机有什么区别? Distrobox 不模拟完整硬件,也不运行独立内核,而是复用宿主内核,因此更轻量,并且与桌面集成更紧密。代价是隔离程度低于虚拟机。