Leonurus-free

Docker 的 --privileged 标志详解

--privileged 是 Docker 中一个非常强大的标志,它会赋予容器几乎与主机相同的权限级别。

功能作用

  1. 完全设备访问
    • 容器可以访问主机上的所有设备(包括 GPU、USB、磁盘等)
    • 绕过 Docker 默认的设备访问限制
  2. 内核能力
    • 授予容器所有 Linux 内核能力(capabilities)
    • 允许执行需要高权限的操作(如加载内核模块、修改网络配置等)
  3. 安全限制解除
    • 禁用大多数安全隔离机制(如 AppArmor、SELinux 等)
    • 允许容器内的进程几乎像主机上的进程一样运行

在你的 GPU 场景中的影响

在你的命令中,--privileged 可能是导致 nvidia-smi 显示所有 GPU 的原因:

  1. 虽然你使用 --gpus '"device=0,1,2"' 限制了 GPU 访问
  2. --privileged 让容器绕过了这些限制
  3. 容器可以直接访问主机上的所有 /dev/nvidia* 设备

何时应该使用

--privileged 通常用于:

安全警告

⚠️ 使用 --privileged 有重大安全风险