在使用 Docker Compose 编排容器时,有时需要赋予容器更高的系统权限,例如访问设备、修改内核参数或执行某些底层操作。这时可以使用 privileged(特权)模式。
启用 privileged: true 后,容器将获得几乎与宿主机 root 用户相同的权限,包括:
⚠️ 注意:特权模式存在较大安全风险,应仅在必要时使用,并确保容器来源可信。
在 docker-compose.yml 文件中,为服务添加 privileged: true 即可:
version: '3.8'
services:
my-service:
image: ubuntu:22.04
privileged: true
command: sleep infinity
出于安全考虑,建议优先使用更细粒度的权限控制,例如:
cap_add:添加特定 Linux 能力(capabilities)devices:挂载特定设备security_opt:调整安全选项services:
safer-service:
image: alpine
cap_add:
- NET_ADMIN
- SYS_TIME
devices:
- "/dev/sda:/dev/sda"
privileged: true 是一个强大但危险的选项。在 Docker Compose 中应谨慎使用,优先考虑最小权限原则,以保障系统安全。