Toolbox

Silverblue 作为不可变操作系统,是非常适合用于进行容器相关的开发的。我们也非常欢迎你在 Silverblue 使用 buildahpodman 完成容器相关的工作。

Silverblue 也提供了 Toolbox ,利用容器提供了一个开发工具和程序库部署与使用的解决方案。

Toolbox 提供了专为应用程序开发和调试打造的容器化环境。在 Fedora Silverblue 这样的不可变操作系统上,Toolbox 提供了一种基于软件包的环境以方便用户安装工具和软件库。当然 Toolbox 也可被用于其它的基于软件包的系统。

为什么使用 Toolbox?

使用 Toolbox 安装开发工具有下面的几个好处:

  • 它使得宿主系统干净且稳定,也有效避免了安装大量开发工具和软件包之后可能发生的混乱。

  • 容器是做实验的好地方:一旦出了问题,只需要删除容器重新开始就行了。

  • 容器是隔离和组织不同项目依赖的好方法。

工作原理

Toolbox 提供了创建、进入、列举和删除容器的实现。与此同时,Toolbox 将容器集成到了常规的工作环境中,以便日常开发使用。

所有 Toolbox 容器都可以通过命令行进入。每一个容器都提供了:

  • 已有的账户及其权限

  • 用户目录的访问能力

  • 常见命令行工具,包括 DNF 软件包管理器

换句话说,Toolbox 容器提供的体验应该与标准的 Linux 命令行环境所提供的相同。

在多数情况下,当你在容器中执行一条命令,容器内的应用程序会被使用。但有些时候使用的会是宿主系统的程序(利用 flatpak-spawn)。一个例子就是 toolbox 这个命令本身,它使得在 Toolbox 容器内使用 Toolbox 成为可能。

安装

Fedora Silverblue

Fedora Silverblue 30 或更高版本已经预装了 Toolbox。在旧版系统上,你可以使用下面的命令安装 Toolbox:

$ rpm-ostree install toolbox

这会将 toolbox 作为一个堆叠的 RPM 被安装。

Fedora Workstation

可以在 Fedora Workstation(或者 Fedora 的任意一个基于软件包的版本)可以使用下面的命令安装 Toolbox:

$ sudo dnf install toolbox

创建第一个 Toolbox 实例

当 Toolbox 被安装后,执行下面的两个命令以开启你的 Toolbox 之旅:

$ toolbox create

这会下载 OCI 映像文件并利用它创建一个 Toolbox 容器。接下来我们执行:

$ toolbox enter

在进入 Toolbox 容器后,你就可以访问常见的命令行工具,并使用 DNF 安装更多新的工具。

当你处于 Toolbox 环境时,你会发现命令提示符会有一个菱形标记作为前缀。如果你使用了自定义的 Shell 主题,这颗菱形就会消失。

命令与用法

toolbox create [--container <name>]

创建一个 Toolbox 容器。如果没有 OCI 映像可用会先作下载,默认情况下下载的是与宿主环境版本对应的 Fedora 映像。如果不添加任何参数, toolbox create 会自动为容器命名。如果需要创建多个容器,使用 --container <name> 为容器命名。

toolbox enter [--container <name>]

进入容器以作交互使用。如果不添加任何参数, toolbox enter 会打开默认的 Toolbox 容器。如果你有多个容器,可以使用 --container name 指定你需要进入的容器。

toolbox run [--container <name>] <cmd> <arg …​>

在容器环境中执行特定命令,但不进入容器。如果不添加任何参数, toolbox run 会在默认的 Toolbox 容器执行你的命令。如果你有多个容器,可以使用 --container name 指定你需要使用的容器。

toolbox list

列出本地可用的 Toolbox 容器和映像。

toolbox rm [--force] <name>

移除一个或多个 Toolbox 容器。使用 --force 参数以强制删除正在运行的容器。

toolbox rmi [--force] <name>

移除一个或多个 Toolbox 映像。

toolbox --help

列出可以使用的命令。

离开 Toolbox 环境

要回到宿主环境,可以执行 exit 或者退出当前 Shell(也就是按下 Ctrl+D)。

背后实现

Toolbox 使用了下面的技术:

交流与沟通

要报告问题、提出建议、贡献代码修复,可以前往 Toolbox 在 GitHub 上的页面

要联系 Toolbox 用户和开发者,可以前往 Fedora 的 Discourse 论坛 ,或者加入 Freenode 的 #silverblue IRC 频道。