Docker学习(三):Docker如何修改容器的系统时间

以普通方式运行docker容器

docker run -it --rm --name centos centos /bin/bash

参数说明:

-it: 表示启用一个伪终端,并以交互方式运行
--rm: 表示退出之后立马删除该容器
--name: 表示给容器起一个名字
centos: 表示镜像名称
/bin/bash: 表示运行于bash程序

此时进入容器之后执行修改容器时间的指令

date -s 08/24/2006
date -s 13:02:00

会给出date: cannot set date: Operation not permitted的错误

那么如何才能修改容器的时间呢? 主要是因为有时候需要测试一些定时任务的场景

退出之前的容器, 以如下方式重新进入容器:

docker run -it --cap-add SYS_TIME --rm --name centos centos /bin/bash

进入容器再使用指令

date -s 08/24/2006
date -s 13:02:00

修改时间, 此时就可以修改成功了.

这个和之前的方式有什么区别呢?多了--cap-add SYS_TIME参数

由于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权限.
使用 --cap-add--cap-drop 可以添加或禁用特定的权限.

--privileged参数也可以达到开放权限的作用, 与--cap-add的区别就是, --privileged是将所有权限给容器.

docker使用--privileged--cap-add--cap-drop 来对容器本身的能力进行开放或限制.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪笨是念来过倒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值