它是如何工作的?

Docker 使用 Sysbox 实现增强的容器隔离 容器运行时。Sysbox 是 标准 OCI runc 运行时,经过修改以增强标准容器隔离,以及 工作量。有关更多详细信息,请参阅揭秘

启用增强型容器隔离后,容器 由用户通过 OR 自动创建 使用 Sysbox 而不是标准 OCI runc 运行时启动。用户不需要 执行任何其他操作,并且可以继续照常使用容器。对于例外情况, 请参阅常见问题解答docker rundocker create

现在,即使是使用 insecure 标志的容器也可以运行 通过增强型容器隔离安全地使用它们,因此它们不能再使用 入侵 Docker 桌面虚拟机 (VM) 或其他容器。--privileged

注意

在 Docker Desktop 中启用增强型容器隔离后,将忽略 Docker CLI 标志。Docker 的默认运行时仍然是 , 但所有用户容器都是使用 Sysbox 隐式启动的。--runtimerunc

增强型容器隔离与 Docker Engine 的 userns-remap 模式或无根 Docker 不同。

揭秘

Sysbox 通过使用以下技术来增强容器隔离:

  • 在所有容器上启用 Linux 用户命名空间(容器中的 root 用户映射到 Linux VM 中的非特权用户)。
  • 限制容器挂载敏感的 VM 目录。
  • 审查容器和 Linux 内核之间的敏感系统调用。
  • 在容器的用户命名空间和 Linux VM 之间映射文件系统用户/组 ID。
  • 模拟容器内的 和 文件系统的一部分。/proc/sys

其中一些是通过 Linux 内核的最新进展实现的,这些 Docker Desktop 现已整合。Sysbox 以最少的 对容器的功能或性能影响。

这些技术补充了 Docker 的传统容器安全机制 例如使用其他 Linux 命名空间、cgroups、受限的 Linux 功能、 Seccomp 和 AppArmor 的 Seccomp 和 AppArmor 的 Seccomp 中。它们在 容器和 Docker Desktop VM 中的 Linux 内核。

有关更多信息,请参阅主要功能和优势

增强的容器隔离与用户命名空间重新映射

Docker 引擎包括一个名为 userns-remap 模式的功能,该功能在所有容器中启用用户命名空间。但是,它受到一些限制,并且是 在 Docker Desktop 中不受支持。

Userns-remap 模式类似于增强型容器隔离,两者都提高了 利用 Linux 用户命名空间进行容器隔离。

但是,增强型容器隔离要先进得多,因为它将 每个容器自动进行独占用户命名空间映射,并添加多个 旨在保护 Docker 的其他容器隔离功能 在具有严格安全要求的组织中使用桌面。

增强的容器隔离与无根 Docker 相比

无根 Docker 允许 Docker Engine 和 扩展容器,以便在没有 root 权限的情况下在 Linux 主机上本地运行。这 允许非 root 用户在 Linux 上原生安装和运行 Docker。

Docker Desktop 不支持无根 Docker。虽然它很有价值 在 Linux 上原生运行 Docker 时,它在 Docker Desktop 中的价值 减少,因为 Docker Desktop 在 Linux VM 中运行 Docker 引擎。那 是,Docker Desktop 已经允许非 root 主机用户运行 Docker 和 使用虚拟机将 Docker Engine 与主机隔离。

与无根 Docker 不同,增强型容器隔离不运行 Docker Engine 在 Linux 用户命名空间中。相反,它运行由该 engine 中。这样做的好处是绕过无根 Docker 的限制 并在容器和 Docker Engine 之间创建更强的边界。

增强的容器隔离旨在确保使用 Docker 启动容器 Desktop 无法轻易攻破 Docker Desktop Linux VM,因此修改 安全设置。