图源:LINO - 崩壊3rd繫体字版6周年 108386100
Toolbox 可看做是Podman的Wrapper,力求将容器与主机的操作系统(Host OS)无缝集成。与Toolbox类似的工具还有Distrobox。它们在牺牲一些容器安全性(端口控制、资源控制、文件的独立性等)的情况下可以做到:
- 用户穿透:在容器中使用与当前Host user一样的user与home目录;
- 设备穿透:直接使用Host的
/dev
、/media
等; - 网络穿透:直接使用Host网络,获得与主机一致的网络体验;
- 服务穿透:通过直接使用Host的
/run/user/<uid>
和/tmp
以及关键服务的Socket,实现在容器中访问主机的显示服务(X11/Wayland)、网络服务(Avahi)、D-Bus、systemd journal等;
因此,Toolbox可以用来:
- 作为不可变系统的软件安装方式之一。如Fedora Silverblue、Fedora CoreOS等不可变系统中均预装Toolbox,另一些不可变系统中可能预装Distrobox;
- 使用其他发行版的镜像,在当前发行版中无缝运行针对其他发行版制作的程序。如在Fedora下运行只提供Ubuntu deb包的GUI程序;
- 在没有Host的root权限时创造一个假root环境。如非privileged的Toolbox容器同样可以使用
sudo dnf install
安装软件;- 需要镜像中预装sudo,并支持
sudo
、wheel
组获取root权限,且支持NOPASSWD
选项;
- 需要镜像中预装sudo,并支持
- 使用不同版本的镜像实现“旧程序运行在新系统上”或“新程序运行在旧系统上”,或对程序进行兼容性测试;
- 可以通过对镜像进行自定义,实现快速且一致的开发环境搭建;