它是如何工作的?
Docker 通过使用Sysbox 容器运行时来实现增强的容器隔离 。 Sysbox 是标准 OCI runc 运行时的一个分支,经过修改以增强标准容器隔离和工作负载。有关更多详细信息,请参阅 引擎盖下。
从版本 4.13 开始,Docker Desktop 包含 Sysbox 的定制版本。
启用增强容器隔离后,用户通过 Sysbox 创建的容器docker run
或docker create
使用 Sysbox(而不是标准 OCI runc 运行时)自动启动容器。用户不需要做任何其他事情,可以像往常一样继续使用容器。对于例外情况,请参阅
常见问题解答。
即使使用不安全--privileged
标志的容器现在也可以通过增强容器隔离安全运行,这样它们就不能再被用来破坏 Docker 桌面虚拟机 (VM) 或其他容器。
笔记
在 Docker Desktop 中启用增强型容器隔离时,Docker CLI“--runtime”标志将被忽略。 Docker 的默认运行时仍然是“runc”,但所有用户容器都通过 Sysbox 隐式启动。
增强容器隔离与 Docker Engine 的 userns-remap 模式或 Rootless Docker 不同。这将在下面进一步解释。
在引擎盖下
Sysbox 通过使用以下技术来增强容器隔离:
- 在所有容器上启用 Linux 用户命名空间(容器中的 root 用户映射到 Linux VM 中的非特权用户)。
- 限制容器挂载敏感虚拟机目录。
- 审查容器和 Linux 内核之间的敏感系统调用。
- 在容器的用户命名空间和 Linux VM 之间映射文件系统用户/组 ID。
- 模拟容器内的 procfs 和 sysfs 文件系统的部分。
其中一些是通过 Docker Desktop 现在包含的 Linux 内核的最新进展而实现的。 Sysbox 应用这些技术,对容器的功能或性能影响最小。
这些技术补充了 Docker 的传统容器安全机制,例如使用其他 Linux 命名空间、cgroup、受限 Linux 功能、seccomp 和 AppArmor。它们在 Docker Desktop VM 内的容器和 Linux 内核之间添加了强大的隔离层。
有关更多信息,请参阅 主要功能和优点。
增强的容器隔离与 Docker 用户重映射模式
Docker 引擎包含一个名为 userns-remap 模式的功能 ,该功能可在所有容器中启用用户命名空间。然而,它有一些 限制,并且 Docker Desktop 不支持它。
用户重映射模式与增强容器隔离类似,两者都通过利用 Linux 用户命名空间来改进容器隔离。
然而,增强型容器隔离要先进得多,因为它会自动为每个容器分配独占的用户命名空间映射,并添加了其他几个 容器隔离功能,旨在保护具有严格安全要求的组织中的 Docker Desktop。
增强容器隔离与 Rootless Docker
Rootless Docker允许 Docker 引擎以及扩展容器在 Linux 主机上本地运行,无需 root 权限。这允许非 root 用户在 Linux 上本机安装和运行 Docker。
Docker Desktop 不支持 Rootless Docker。虽然在 Linux 上本地运行 Docker 时这是一个很有价值的功能,但由于 Docker Desktop 在 Linux VM 中运行 Docker 引擎,因此它在 Docker Desktop 中的价值会降低。也就是说,Docker Desktop 已经允许非 root 主机用户运行 Docker,并使用虚拟机将 Docker Engine 与主机隔离。
与 Rootless Docker 不同,增强型容器隔离不在 Linux 用户命名空间内运行 Docker 引擎。相反,它在用户命名空间内运行该引擎生成的容器。这样做的优点是可以绕过 Rootless Docker 的限制,并在容器和 Docker 引擎之间创建更牢固的边界。
增强的容器隔离旨在确保使用 Docker Desktop 启动的容器不会轻易破坏 Docker Desktop Linux VM,从而修改其中的安全设置。