什么是 Privileged 模式?
在 Docker 中,privileged(特权)模式允许容器访问主机的所有设备,并赋予其几乎等同于宿主机 root 用户的权限。
在 docker-compose.yml 中启用该模式,可让容器执行需要高权限的操作,如加载内核模块、访问硬件设备等。
如何在 Docker Compose 中启用 Privileged 模式?
只需在服务配置中添加 privileged: true 即可:
services:
my-service:
image: ubuntu:22.04
privileged: true
command: ["sleep", "infinity"]
使用场景
- 运行需要访问底层硬件的容器(如 GPU、USB 设备)
- 调试或开发需要修改内核参数的应用
- 运行系统级工具(如
strace,perf)
安全风险与建议
启用 privileged 模式会极大削弱容器的隔离性,可能带来严重的安全隐患。
建议仅在必要时使用,并优先考虑更细粒度的权限控制方式,例如:
- 使用
cap_add添加特定能力(capabilities) - 通过
devices显式挂载所需设备 - 限制容器网络和文件系统访问