容器安全常见问题
Table of contents
Docker Desktop 中的容器如何与主机隔离?
Docker Desktop 在定制的 Linux 虚拟机中运行所有容器(原生 Windows 容器除外)。这为容器与主机之间提供了强大的隔离,即使容器以 root 身份运行也是如此。
需要注意的重要事项包括:
- 容器可以通过 Docker Desktop 设置访问配置为文件共享的主机文件
- 默认情况下,容器在 Docker Desktop VM 内以 root 身份运行,但权限受限
- 特权容器(
--privileged、--pid=host、--cap-add)在 VM 内以提升的权限运行,从而可以访问 VM 内部和 Docker Engine
启用增强容器隔离(Enhanced Container Isolation)后,每个容器在 Docker Desktop VM 内的专用 Linux 用户命名空间中运行。即使是特权容器,其权限也仅限于容器边界内,而非整个 VM。ECI 采用先进技术防止容器突破 Docker Desktop VM 和 Docker Engine。
容器可以访问主机文件系统的哪些部分?
容器只能访问以下主机文件:
- 使用 Docker Desktop 设置共享的文件
- 明确绑定挂载到容器中的文件(例如
docker run -v /path/to/host/file:/mnt)
以 root 身份运行的容器能否访问主机上管理员拥有的文件?
不能。主机文件共享使用用户空间文件服务器(以 Docker Desktop 用户身份在 com.docker.backend 中运行),因此容器只能访问 Docker Desktop 用户已有权限访问的文件。