启用增强容器隔离
ECI 可防止恶意容器危及 Docker Desktop,同时保持开发者生产力。
本页向您展示如何启用增强容器隔离 (ECI) 并验证其是否正常工作。
先决条件
在开始之前,您必须拥有
- Docker Business 订阅
- Docker Desktop 4.13 或更高版本
- 强制登录(仅限管理组织范围设置的管理员)
启用增强容器隔离
对于开发者
在 Docker Desktop 设置中启用 ECI
登录到 Docker Desktop 中的组织。您的组织必须拥有 Docker Business 订阅。
停止并移除所有现有容器
$ docker stop $(docker ps -q) $ docker rm $(docker ps -aq)在 Docker Desktop 中,转到设置 > 通用。
选择使用增强容器隔离复选框。
选择应用并重启。
重要ECI 不保护在启用该功能之前创建的容器。在启用 ECI 之前请移除现有容器。
对于管理员
使用设置管理在组织范围内配置增强容器隔离
- 登录 Docker Home 并选择您的组织。
- 转到管理控制台 > 桌面设置管理。
- 创建或编辑设置策略.
- 将增强容器隔离设置为始终启用。
创建
admin-settings.json文件并添加{ "configurationFileVersion": 2, "enhancedContainerIsolation": { "value": true, "locked": true } }根据需要配置以下内容
"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作为容器运行时。