容器技术:从起源到 Podman 的演进之旅
1. 容器技术的早期探索
1.1 chroot 环境
在标准的 chroot 环境中,运行的进程仅在文件系统层面存在限制和隔离。运行进程、系统资源、网络子系统和系统用户等其他方面,均由 chroot 内的进程与主机系统的进程共享。
1.2 FreeBSD jails
FreeBSD jails 的主要特点是实现了网络子系统、系统用户及其进程的虚拟化,这极大地提升了灵活性和整体安全性。其具有以下四个关键特性:
- 目录子树 :类似于 chroot 监狱,一旦定义为子树,运行进程就被限制在其中,无法逃脱。
- IP 地址 :可以为 jail 定义独立的 IP 地址,使运行进程与主机系统隔离。
- 主机名 :在 jail 内部使用,与主机系统不同。
- 命令 :即运行的可执行文件,可在系统 jail 内运行,其相对路径包含在 jail 中。
此外,每个 jail 实例都有自己的用户和根账户,对其他 jail 或底层主机系统没有任何特权或权限。并且,有两种安装/创建 jail 的方式:
- 从二进制文件安装,类似于使用底层操作系统进行安装。
- 从源代码构建,从头开始构建最终应用所需的内容。
1.3 Solaris Containers(Solaris Zones)
2004 年出现的 Solaris Containers 实际上是 Solar