启用增强容器隔离

订阅: 商业版
适用于: 管理员

ECI 可防止恶意容器危及 Docker Desktop,同时保持开发者生产力。

本页向您展示如何启用增强容器隔离 (ECI) 并验证其是否正常工作。

先决条件

在开始之前,您必须拥有

  • Docker Business 订阅
  • Docker Desktop 4.13 或更高版本
  • 强制登录(仅限管理组织范围设置的管理员)

启用增强容器隔离

对于开发者

在 Docker Desktop 设置中启用 ECI

  1. 登录到 Docker Desktop 中的组织。您的组织必须拥有 Docker Business 订阅。

  2. 停止并移除所有现有容器

    $ docker stop $(docker ps -q)
    $ docker rm $(docker ps -aq)
    
  3. 在 Docker Desktop 中,转到设置 > 通用

  4. 选择使用增强容器隔离复选框。

  5. 选择应用并重启

重要

ECI 不保护在启用该功能之前创建的容器。在启用 ECI 之前请移除现有容器。

对于管理员

使用设置管理在组织范围内配置增强容器隔离

  1. 登录 Docker Home 并选择您的组织。
  2. 转到管理控制台 > 桌面设置管理
  3. 创建或编辑设置策略.
  4. 增强容器隔离设置为始终启用
  1. 创建 admin-settings.json 文件并添加

    {
      "configurationFileVersion": 2,
      "enhancedContainerIsolation": {
        "value": true,
        "locked": true
      }
    }
  2. 根据需要配置以下内容

    • "value": true:默认启用 ECI(必需)
    • "locked": true:防止开发者关闭 ECI
    • "locked": false:允许开发者控制设置

应用配置

为使 ECI 设置生效

  • 新安装:用户启动 Docker Desktop 并登录
  • 现有安装:用户必须完全退出 Docker Desktop 并重新启动
重要

从 Docker Desktop 菜单重启不足够。用户必须完全退出并重新打开 Docker Desktop。

您还可以为需要 Docker API 访问的受信任镜像配置Docker 套接字挂载权限

验证增强容器隔离是否已激活

启用 ECI 后,使用这些方法验证其是否正常工作。

检查用户命名空间映射

运行容器并检查用户命名空间映射

$ docker run --rm alpine cat /proc/self/uid_map

启用 ECI 后

0     100000      65536

这表示容器的根用户 (0) 映射到 Docker Desktop VM 中的非特权用户 (100000),拥有 64K 个用户 ID 范围。每个容器都会获得一个独占的用户 ID 范围以实现隔离。

关闭 ECI 后

0          0 4294967295

这表示容器根用户 (0) 直接映射到 VM 根用户 (0),提供的隔离性较低。

检查容器运行时

验证正在使用的容器运行时

$ docker inspect --format='{{.HostConfig.Runtime}}' <container_name>

启用 ECI 后,它会返回 sysbox-runc。关闭 ECI 后,它会返回 runc

测试安全限制

验证 ECI 安全限制是否处于活动状态。

测试命名空间共享

$ docker run -it --rm --pid=host alpine

启用 ECI 后,此命令将因 Sysbox 容器无法与主机共享命名空间而失败。

测试 Docker 套接字访问

$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock alpine

启用 ECI 后,此命令将失败,除非您为受信任的镜像配置了 Docker 套接字例外。

强制执行 ECI 后用户所看到的内容

当管理员通过设置管理强制执行增强容器隔离时

  • Docker Desktop 设置中会显示“使用增强容器隔离”设置已启用。
  • 如果设置为 "locked": true,则该设置将被锁定并灰显。
  • 所有新容器将自动使用 Linux 用户命名空间。
  • 现有开发工作流程无需修改即可继续工作。
  • 用户在 docker inspect 输出中会看到 sysbox-runc 作为容器运行时。

后续步骤

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.