在本指南中,我们将了解什么是 Toolbox 以及如何使用 Toolbox 创建和管理容器化开发环境 Fedora Linux。
内容
什么是工具箱?
近年来,Linux 容器虚拟化获得了很大的发展势头。 事实上,新一代的虚拟化就是容器化。
如今,应用程序开发人员大多使用容器作为首选的开发环境。 有许多工具可以创建和管理 Linux 容器。 波德曼, 码头工人, 流浪汉 是一些流行的容器管理应用程序。
今天,我们将讨论另一个名为 工具箱 这使得在日常软件开发中使用容器化环境变得容易。
Toolbox 是一个内部工具,来自 Fedora 在您的基础上创建容器化的命令行环境 Fedora 基础系统。
它对于设置可以安装和使用开发工具和库的使用和抛出软件开发环境特别有用。
工具箱专为 操作系统树 基于系统,例如 Fedora 核心操作系统 和 Fedora 银蓝. 您可能已经知道,基于 OSTree 的系统是不可变的。
immutable OS 的实际目标是阻止在主机系统上安装软件,并鼓励用户在容器中安装软件。
与基于 OSTree 的系统不同,容器是完全可变的。 因此,您可以在容器内安装您最喜欢的开发和调试工具、编辑器和 SDK。 主机系统上没有安装任何东西。
通俗地说,我们可以在 Toolbox 的帮助下在不可变的主机操作系统上部署一个可变容器。
默认情况下,Toolbox 根据您当前的系统创建容器。 例如,如果您的基本系统是 Fedora 33、然后toolbox会根据 Fedora 33. 在这个容器中,你可以使用包管理器,比如 yum
或者 dnf
安装您喜欢的应用程序。 您还可以基于其他创建容器 Fedora 版本也是如此。
您可以一次启动多个容器并同时开始处理不同的项目。 完成容器后,只需将其删除并随时创建一个新容器即可。 同样,主机系统不会以任何方式受到影响。 这样我们就可以维护一个干净的主机操作系统。 这也将大大避免混乱并减少主机操作系统重新安装的过程。
Toolbox 建立在 OCI 容器镜像和 Podman 之上。 它不需要任何 root
部署容器的权限。 好在 Toolbox 的安装和使用非常好用且好记!
安装工具箱 Fedora
工具箱预装了 Fedora Silverblue 30 及更新版本。 在 Fedora 工作站,您可以使用安装它 dnf
或者 yum
包管理器:
$ sudo dnf install toolbox
或者,
$ sudo yum install toolbox
开始使用 Toolbox Fedora 银蓝
Toolbox 提供了少量命令来创建、列出、输入和删除容器。
1. 显示工具箱帮助
如果您不熟悉 Toolbox,最好显示 Toolbox 帮助部分以了解每个命令的作用。 要查看 Toolbox 帮助,请使用以下任一命令:
$ toolbox --help
$ toolbox help
$ toolbox -h
现在让我们从创建新容器开始。
2.新建一个容器
根据您当前的情况创建新容器 Fedora 操作系统版本,只需运行:
$ 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
Toolbox 将从以下位置下载与您当前主机系统的操作系统版本匹配的映像 Fedora registry 并根据下载的镜像创建一个新容器。 这些图像通常是实际发行版的精简版。
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 我的 32 个容器 Fedora 33 silverblue 版使用以下命令:
$ 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-32
和 fedora-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. Enter 放入容器中
我们已经创建了容器,但还没有进入它们。 所以让我们使用命令进入一个容器:
$ toolbox enter
进入容器后,shell 提示前会加上 钻石 符号如以下输出所示:
⬢[[email protected] ~]$
您是否注意到提示最左侧的菱形符号? 这意味着您在容器内。
Containers 与您当前的操作系统无缝集成。 在每个容器内,您将找到您现有的用户名和权限。
您可以像从主机系统那样访问您的主目录和其他几个位置。 您还可以访问系统和会话 D-Bus、系统日志和 Kerberos 等。
每个容器都包含通用的命令行工具,包括一个包管理器(例如, DNF
在 Fedora)。 因此,您可以在容器内安装和测试任何软件。
例如,以下命令安装所有必需的开发工具:
$ sudo yum groupinstall "Development Tools"
5.1. Enter 放入特定容器
当你运行 toolbox enter
命令没有任何选项,它打开默认的工具箱容器。 默认容器是基于您的主机操作系统的容器。
如果你想打开一个不同的容器,明确地提到它的名字,如下所示:
$ toolbox enter -c fedora-toolbox-32
这里, -c
用于引用容器名称和 fedora-toolbox-32
是容器名称。
6. Exit 工具箱
完成容器后,只需键入 exit
从容器中注销。
$ exit
7.在容器中运行命令而不进入它们
Toolbox 的一个显着特点是您可以在容器上运行命令而无需进入它们。 以下命令显示来自主机系统的默认容器的分发版本:
$ 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
使用 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
结论
容器不仅用于实验和学习目的,它们也是隔离开发环境的理想选择,您可以在其中处理不同操作系统版本上的不同项目。 Toolbox 使容器的管理变得更加容易和更好!
资源:
- 工具箱文档
- 工具箱 GitHub 存储库
FedoraFedora SilverblueLinuxLinux 容器OstreePodmanPodman 命令工具箱工具箱命令