局限性

WSL 的 ECI 支持

注意

Docker Desktop 需要 WSL 2 版本 1.1.3.0 或更高版本。要获取当前的 主机上的 WSL 版本,键入 .如果命令失败或 返回 1.1.3.0 之前的版本号,请将 WSL 更新到最新版本 通过在 Windows 命令或 PowerShell 终端中键入。wsl --versionwsl --update

WSL 上的 ECI 不如 Hyper-V 安全,因为:

  • 虽然 WSL 上的 ECI 仍然强化容器,以便恶意工作负载无法 轻松攻破 Docker Desktop 的 Linux VM,WSL 上的 ECI 无法阻止 Docker 桌面用户无法破坏 Docker 桌面 Linux VM。此类用户可以 使用命令轻松访问该 VM(以 root 身份) 并使用该访问权限修改 VM 中的 Docker Engine 设置。这给出了 Docker Desktop 用户控制 Docker Desktop VM,并允许他们绕过管理员通过设置管理功能设置的 Docker Desktop 配置。相比之下, Hyper-V 上的 ECI 不允许 Docker Desktop 用户破坏 Docker 桌面 Linux VM。wsl -d docker-desktop

  • 使用 WSL 2 时,同一 Windows 主机上的所有 WSL 2 分发共享同一实例 Linux 内核的 Linux 内核。因此,Docker Desktop 无法确保 Docker Desktop Linux VM 中的内核,因为另一个 WSL 2 发行版可能会 修改共享内核设置。相比之下,在使用 Hyper-V 时,Docker 桌面 Linux VM 具有专用内核,该内核完全由 Docker 桌面。

下表对此进行了总结。

安全功能WSL 上的 ECIHyper-V 上的 ECI评论
高度安全的容器是的是的使恶意容器工作负载更难破坏 Docker Desktop Linux 虚拟机和主机。
Docker Desktop Linux 虚拟机受保护,不被用户访问是的在 WSL 上,用户可以直接访问 Docker Engine 或绕过 Docker Desktop 安全设置。
Docker Desktop Linux VM 具有专用内核是的在 WSL 上,Docker Desktop 无法保证内核级别配置的完整性。

通常,将 ECI 与 Hyper-V 结合使用比使用 WSL 2 更安全。但是 WSL 2 在主机上提供性能和资源利用率优势, 这是用户运行他们最喜欢的 Linux 发行版的绝佳方式 Windows 托管并从内部访问 Docker。

使用 “docker” 驱动程序对 Docker 构建的 ECI 保护

在 Docker Desktop 4.30 之前,使用 buildx 驱动程序(默认)的命令不受 ECI 保护,换句话说,构建运行 rootful 的 Docker 桌面 VM 中。docker builddocker

从 Docker Desktop 4.30 开始,使用 buildx 驱动程序的命令受 ECI 保护,除非 Docker Desktop 配置为使用 WSL 2 (在 Windows 主机上)。docker builddocker

请注意,使用驱动程序的命令包括 始终受到 ECI 的保护。docker builddocker-container

Docker Build 和 Buildx 有一些限制

启用 ECI 后,Docker build 和 Docker Buildx 权利 (, ) 不允许。需要 这些将无法正常工作。--network=hostnetwork.hostsecurity.insecure

Kubernetes Pod 尚未受到保护

使用 Docker Desktop 集成的 Kubernetes 时,Pod 尚未受到保护 由 ECI 提供。因此,恶意或特权 Pod 可能会破坏 Docker 桌面 Linux VM 并绕过安全控制。

作为替代方案,您可以使用 K8s.io KinD 工具 与 ECI。在这种情况下,每个 Kubernetes 节点都在受 ECI 保护的 容器,从而更牢固地将 Kubernetes 集群与 底层 Docker Desktop Linux VM(以及其中的 Docker Engine)。没有特别的 需要安排,只需启用 ECI 并照常运行 KinD 工具即可。

扩展容器尚未受到保护

扩展容器也尚未受到 ECI 的保护。确保你扩展 容器来自受信任的实体以避免问题。

Docker Desktop 开发环境尚未受到保护

Docker Desktop Dev Environments 功能启动的容器尚未推出 保护。

Docker 调试容器尚未受到保护

Docker 调试容器 尚未受到 ECI 的保护。

不支持本机 Windows 容器

ECI 仅在 Docker Desktop 处于 Linux 容器模式(默认 最常见模式)。在 原生 Windows 容器模式(即,Windows 主机不支持该模式),当 Docker Desktop 从其默认的 Linux 模式切换到本机 Windows 模式)。

在生产中使用

通常,用户不应遇到运行容器之间的差异 在 Docker Desktop 中启用了 ECI,它使用 Sysbox 运行时,并运行 通过标准 OCI 运行时在生产环境中使用同一容器。runc

但是,在某些情况下,通常在 containers 时,用户可能会遇到一些差异。具体而言,容器 可以与 ECI 一起运行,但不能与 一起运行,反之亦然。runc