Docker中获取root【所有 | 有限授权】权限
Docker中获取root【所有 | 指定】权限问题抛出解决思路解决方案参考列表,致谢Docker中获取root【所有 | 指定】权限)问题抛出Docker容器中执行 date -s 2019-09-02 01:01:01 命令时,报出如下错误:date: cannot set date: Operation not permitted解决思路经查询了解到,docker容器的资源隔离使...
Docker中获取root【所有 | 指定】权限)
问题抛出
Docker容器中执行 date -s 2019-09-02 01:01:01 命令时,报出如下错误:
date: cannot set date: Operation not permitted
解决思路
经查询了解到,docker容器的资源隔离使用了Linux宿主机的Capability机制,而Capability机制允许我们显示的将root的权限划分为不同的小的单元。默认情况下,docker容器中只支持如下Capability:
CHOWN,
DAC_OVERRIDE,
FSETID,
FOWNER,
MKNOD,
NET_RAW,
SETGID,
SETUID,
SETFCAP,
SETPCAP,
NET_BIND_SERVICE,
SYS_CHROOT,
KILL,
AUDIT_WRITE
修改系统时钟需要用到 SYS_TIME 权限。
解决方案
①、一刀切,直接通过--privileged
赋予全部最高权限
A) docker 命令行启动方式下,配置–privileged,范例:
[root@localhost ~]# docker run -it --privileged --name mycentos centos:latest /bin/bash
B) docker-compose.yml下,在service_name->app_name下配置:
privileged: true
②、仅通过--cap-add
赋予时钟修改权限
A) docker 命令行启动方式下,范例:
[root@localhost ~]# docker run -it --cap-add SYS_TIME --rm --name mycentos centos:lastest /bin/bash
B) docker-compose.yml下,在service->app_name下配置:
#添加SYS_TIME能力
cap_add:
- SYS_TIME
# 添加全部能力
cap_add:
- ALL
# 删除NET_ADMIN,SYS_ADMIN能力
cap_drop:
- NET_ADMIN
- SYS_ADMIN
参考列表,致谢
1: https://www.jianshu.com/p/3cfd7e4d8c76
2: https://docs.docker.com/compose/compose-file/
更多推荐
所有评论(0)