容器安全常见问题

Docker Desktop 中容器是如何与主机隔离的?

Docker Desktop 在定制的 Linux 虚拟机中运行所有容器(原生 Windows 容器除外)。这在容器和主机之间增加了强大的隔离,即使容器以 root 身份运行也是如此。

重要注意事项包括:

  • 容器可以通过 Docker Desktop 设置访问配置为文件共享的主机文件
  • 默认情况下,容器以具有有限功能的 root 身份在 Docker Desktop VM 中运行
  • 特权容器(`--privileged`、`--pid=host`、`--cap-add`)在 VM 中以提升的权限运行,使它们能够访问 VM 内部和 Docker Engine

启用增强容器隔离后,每个容器都在 Docker Desktop VM 内的专用 Linux 用户命名空间中运行。即使是特权容器也只在其容器边界内拥有权限,而不是在 VM 中。ECI 使用高级技术来防止容器突破 Docker Desktop VM 和 Docker Engine。

容器可以访问主机文件系统的哪些部分?

容器只能访问以下主机文件:

  1. 使用 Docker Desktop 设置共享
  2. 显式绑定挂载到容器中(例如,`docker run -v /path/to/host/file:/mnt`)

以 root 身份运行的容器可以访问主机上管理员拥有的文件吗?

不可以。主机文件共享使用用户空间文件服务器(在 `com.docker.backend` 中以 Docker Desktop 用户身份运行),因此容器只能访问 Docker Desktop 用户已拥有访问权限的文件。

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