Docker特权模式
- docker使用
--privileged
,--cap-add
,--cap-drop
来对容器本身的能力进行开放或限制,使用--cap-add
,--cap-drop
可以添加或禁用特定的权限 -
--privileged
参数也可以达到开放权限的作用, 与--cap-add
的区别就是,--privileged
是将所有权限给容器 - 由于docker容器的隔离是基于Linux的Capability机制实现的, Linux的Capability机制允许你将超级用户相关的高级权限划分成为不同的小单元. 目前Docker容器默认只用到了以下的Capability
CHOWN,
DAC_OVERRIDE,
FSETID,
FOWNER,
MKNOD,
NET_RAW,
SETGID,
SETUID,
SETFCAP,
SETPCAP,
NET_BIND_SERVICE,
SYS_CHROOT,
KILL,
AUDIT_WRITE
而要修改系统时间需要有SYS_TIME
权限,如:docker run -it --cap-add SYS_TIME --rm --name centos centos /bin/bash