Fedora Silverblue上的工具箱入门

在本指南中,我们将研究什么是Toolbox,以及如何在Fedora Linux上使用Toolbox创建和管理容器化的开发环境。

什么是工具箱?

近年来,Linux容器虚拟化获得了很大的发展势头。 实际上,新一代虚拟化是容器化。 如今,应用程序开发人员大多使用容器作为其首选的开发环境。 存在许多用于创建和管理Linux容器的工具。 Podman,Docker,Vagrant是一些流行的容器管理应用程序。 今天,我们将讨论另一个名为 工具箱 这使得使用容器化环境轻松进行日常软件开发变得很容易。

Toolbox是Fedora的内部工具,用于在Fedora基本系统之上创建容器化的命令行环境。 这对于设置可以安装和使用开发工具和库的使用和抛出软件开发环境特别有用。

工具箱专门为 操作系统树 基于系统,例如 Fedora核心操作系统Fedora银蓝色。 您可能已经知道,基于OSTree的系统是不可变的。 不变操作系统的实际目标是阻止在主机系统上安装软件,并鼓励用户将软件安装在容器中。

与基于OSTree的系统不同,容器是完全可变的。 因此,您可以在容器内安装安装自己喜欢的开发和调试工具,编辑器和SDK。 主机系统上未安装任何软件。 用外行术语来说,我们可以借助Toolbox在不可变的主机操作系统上部署可变容器。

默认情况下,Toolbox根据您当前的系统创建容器。 例如,如果您的基本系统是Fedora 33,则工具箱将基于Fedora 33创建一个容器。在该容器中,您可以使用软件包管理器,例如 yum 或者 dnf 安装您的首选应用程序。 您也可以基于其他Fedora版本创建容器。

您可以一次启动多个容器,并同时开始处理不同的项目。 使用完容器后,只需删除它,并在需要时创建一个新容器即可。 同样,主机系统不会受到任何影响。 这样,我们可以保持干净的主机操作系统。 这也将极大地避免混乱,并减少了主机OS​​重新安装的过程。

工具箱建立在 OCI容器图像Podman。 不需要任何 root 部署容器的特权。 好东西是Toolbox的安装和使用非常易于使用且易于记忆!

在Fedora上安装工具箱

工具箱已预装Fedora Silverblue 30和更高版本。 在Fedora工作站上,您可以使用 dnf 或者 yum 包管理器:

$ sudo dnf install toolbox

或者,

$ sudo yum install toolbox

Fedora Silverblue上的工具箱入门

工具箱提供了少量命令来创建,列出,输入和删除容器。

1.显示工具箱帮助

如果您不熟悉Toolbox,最好显示Toolbox帮助部分以了解每个命令的功能。 要查看工具箱帮助,请使用以下任一命令:

$ toolbox --help
$ toolbox help
$ toolbox -h

现在让我们开始创建新的容器。

2.创建一个新的容器

要基于您当前的Fedora OS版本创建新容器,只需运行:

$ toolbox create

此命令将搜索用于从本地系统构建容器的基础映像。 如果找不到本地图像,将提示您下载相应的图像。 类型 ÿ 并按ENTER键下载图像。

样本输出:

Image required to create toolbox container.
Download registry.fedoraproject.org/fedora-toolbox:33 (500MB)? [y/N]: y
Created container: fedora-toolbox-33
Enter with: toolbox enter

使用工具箱创建一个新容器

工具箱将从以下位置下载与您当前主机系统的操作系统版本匹配的映像: Fedora注册表 并根据下载的图像创建一个新容器。 图像通常是实际发行版的精简版。

2.1。 用自定义名称创建容器

工具箱将自动分配一个唯一的名称(例如, fedora-toolbox-33)到新创建的容器。 如果您想使用自己选择的自定义名称创建容器,请使用 --container-c 标志,后跟容器名称,如下所示:

$ toolbox create --container mytoolbox-f33

或不久:

$ toolbox create -c mytoolbox-f33

这里, mytoolbox-f33 是容器的名称。

3.根据特定的操作系统版本创建一个新的容器

正如我已经提到的,Toolbox根据当前的操作系统版本创建容器。 例如,如果您正在运行Fedora 34,则Toolbox将基于Fedora 34映像创建一个容器。 但是,您也可以基于其他版本创建容器。 我使用以下命令在Fedora 33 silverblue版本上创建了Fedora 32容器:

$ toolbox create --release f32

或不久之后,

$ toolbox create -r f32

4.列出容器

要列出系统上所有本地可用的容器,请运行:

$ toolbox list

样本输出:

IMAGE ID      IMAGE NAME                                        CREATED
9659c2039e64  registry.fedoraproject.org/f32/fedora-toolbox:32  4 months ago
675192cc4238  registry.fedoraproject.org/fedora-toolbox:33      4 weeks ago

CONTAINER ID  CONTAINER NAME     CREATED         STATUS      IMAGE NAME
2cfb48d6a6c5  fedora-toolbox-32  4 months ago    exited      registry.fedoraproject.org/f32/fedora-toolbox:32
1f709997b871  fedora-toolbox-33  27 minutes ago  configured  registry.fedoraproject.org/fedora-toolbox:33

列出工具箱容器列出工具箱容器

如您在上面的输出中看到的,我有两个容器,分别是 fedora-toolbox-32fedora-toolbox-33 在我的系统上。

输出的顶部显示用于创建容器的基本映像的详细信息,例如映像ID,映像名称以及创建这些映像的时间。 在底部,您将看到容器的详细信息,例如容器ID,容器名称,创建容器的时间以及容器的状态。

您也可以分别显示容器详细信息或图像详细信息。 要仅列出容器详细信息,请使用 --containers-c 选项:

$ toolbox list --containers
 CONTAINER ID  CONTAINER NAME     CREATED       STATUS   IMAGE NAME
 2cfb48d6a6c5  fedora-toolbox-32  4 months ago  running  registry.fedoraproject.org/f32/fedora-toolbox:32
 1f709997b871  fedora-toolbox-33  21 hours ago  running  registry.fedoraproject.org/fedora-toolbox:33

要仅列出图像,请使用 --images-i 旗帜:

$ toolbox list --images
 IMAGE ID      IMAGE NAME                                        CREATED
 9659c2039e64  registry.fedoraproject.org/f32/fedora-toolbox:32  4 months ago
 675192cc4238  registry.fedoraproject.org/fedora-toolbox:33      4 weeks ago

请注意,容器名称和图像名称看起来几乎相同,除了名称的最后一部分。 容器名称通常有 连字号 (-)在其名称的最后一部分之前(例如, fedora-toolbox-33),并且图片名称包含 冒号 (:)(例如, fedora-toolbox:33)。

5.进入容器

我们已经创建了容器,但尚未输入它们。 因此,让我们使用命令进入容器:

$ toolbox enter

输入容器后,shell提示符前会带有一个 钻石 符号,如以下输出所示:

⬢[[email protected] ~]$ 

您是否注意到提示最左侧的菱形符号? 这意味着您在容器内。

工具箱容器在Fedora Silverblue中运行工具箱容器在Fedora Silverblue中运行

容器与您当前的操作系统无缝集成。 在每个容器内,您将找到现有的用户名和权限。

您可以从主机系统访问自己的主目录和其他几个位置。 您还可以访问系统和会话D-Bus,系统日志和Kerberos等。

每个容器都包含通用的命令行工具,包括程序包管理器(例如, DNF 在Fedora上)。 因此,您可以在容器内安装和测试任何软件。 例如,以下命令将安装所有必需的开发工具:

$ sudo yum groupinstall "Development Tools"

5.1。 输入特定的容器

当您运行 toolbox enter 命令,不带任何选项,它将打开默认的工具箱容器。 默认容器是基于主机OS的容器。 如果要打开其他容器,请明确提及其名称,如下所示:

$ toolbox enter -c fedora-toolbox-32

这里, -c 用于引用容器名称和 fedora-toolbox-32 是容器名称。

6.退出工具箱

容器处理完毕后,只需键入 exit 从容器中注销。

$ exit

7.在容器中运行命令,而无需输入命令

工具箱的一个显着功能是您可以在容器中运行命令而无需输入命令。 以下命令显示默认容器从主机系统的发行版本:

$ toolbox run cat /etc/redhat-release
Fedora release 33 (Thirty Three)

当您运行 toolbox run 命令,不带任何选项,它将在默认容器上执行命令。 您还可以通过在其他容器上指定其名称来在其他容器上运行命令 --container-c 旗帜:

$ toolbox run -c fedora-toolbox-32 cat /etc/redhat-release
Fedora release 32 (Thirty Two)

在工具箱容器中运行命令,而无需输入命令在工具箱容器中运行命令,而无需输入命令

8.停止运行容器

从容器退出后,它将继续运行,直到您停止它为止。 没有直接的工具箱命令来停止正在运行的容器。 但是,我们可以使用 podman 停止工具箱容器的命令:

$ podman container stop fedora-toolbox-33

记住Toolbox在引擎盖下使用podman。

9.删除工具箱容器和图像

如果您不想要容器或其基本图像,则可以像下面这样简单地摆脱它们。

删除容器之前,请确保您已退出该容器。

要删除容器,请运行:

$ toolbox rm fedora-toolbox-32

上面的命令删除名为的容器 fedora-toolbox-32

要强行删除容器(即使正在运行),请使用 --force-f 旗帜:

$ toolbox rm -f fedora-toolbox-32

要删除所有容器,请使用 --all-a 旗帜:

$ toolbox rm --all

通过列出可用的容器来验证是否删除了该容器:

$ toolbox list

同样,您可以使用以下方法删除工具箱图像: toolbox rmi 如下命令:

$ toolbox rmi fedora-toolbox:32

请注意 i 在上面的命令中。 这 rm 命令删除容器,而 rmi 命令删除图像。 另外,请不要忘记提及要删除的图像的正确名称。

要删除所有图像,请使用 --all-a 旗帜:

$ toolbox rmi --all

10.使用podman管理工具箱容器和图像

由于Toolbox只是podman的包装,因此您可以直接使用podman命令来管理容器。

要使用podman命令列出工具箱容器,请运行:

$ podman ps -a

要使用podman列出工具箱图像,请运行:

$ podman images

要启动容器:

$ podman start fedora-toolbox-33

要查看所有正在运行的容器的实时资源使用情况统计信息:

$ podman stats

要停止容器:

$ podman stop fedora-toolbox-33

检查容器:

$ podman inspect fedora-toolbox-33

取出容器:

$ podman rm <container-name>

移除图片:

$ podman rmi <image-name>

有许多可用的podman命令。 您可以从podman帮助部分查看所有可用的常规命令和选项:

$ podman --help

结论

容器不仅用于实验和学习目的,而且对于隔离的开发环境也是理想的,您可以在该环境中使用不同的OS版本处理不同的项目。 工具箱使容器的管理变得更加轻松和完善!

资源

FedoraFedora SilverblueLinuxLinux容器OstreePodmanToolbox

Sidebar