当前位置: 代码网 > 服务器>服务器>云虚拟主机 > docker容器中如何修改时间

docker容器中如何修改时间

2024年06月13日 云虚拟主机 我要评论
docker容器中修改时间我们在docker容器中直接通过命令行修改时间会有下面这个报错:date: can't set date: operation not permitted这是由于do

docker容器中修改时间

我们在docker容器中直接通过命令行修改时间会有下面这个报错:

date: can't set date: operation not permitted

这是由于docker容器是基于linux的capability机制来进行隔离。

而修改系统时间是需要有sys_time权限才可以修改,docker容器默认是没有这个权限的。

所以我们可以在启动容器的时候,加一个参数

--cap-add sys_time

比如

docker run -it --cap-add sys_time --name docker1101 apline /bin/sh

然后我们再去容器中执行修改时间的命令:

date -s "2021-3-10 11:42:45"  
docker exec -i docker1101 /bin/sh -c 'date -s "2021-3-10 11:42:45"'

可以看到容器的时间已经改变

不过通过这种方式修改容器的时间,事实上同时把宿主机的时间也会修改了。

如果这个宿主机上同时运行了其他的容器,那么这些容器的时间也会产生变化。

另外还有一种方式,可以用libfaketime

libfaketime是一个库,用于修改docker容器时间而不影响宿主机的。

它能够“覆盖”应用程序用来检索当前日期或时间的系统调用,并给这些调用提供伪造的值。

它发布于github

安装记录如下:

我这里的docker用得是apline,先切换apline安装源

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

下载libfaketime

wget https://github.com/wolfcw/libfaketime/archive/master.zip

安装

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
apk add make gcc g++
wget http://192.168.0.203/master.zip
unzip master.zip
cd libfaketime-master
make && make install
cd ..
rm -rf libfaketime-master master.zip

验证

export ld_preload=/usr/local/lib/faketime/libfaketime.so.1 faketime="2019-08-12 10:30:22"

docker容器修改时间报错 date: cannot set date: operation not permitted

docker容器修改时间 date -s 报错 date: cannot set date: operation not permitted

原因是在容器内没有权限进行操作,启动容器时授权即可。

docker-compose修改方法

添加 privileged: true

容器修改方法

docker run -itd --privileged=true -p 3306:3306 mysql:5.7.36

接下来就可以使用date -s修改时间了

直接修改时区

添加

     environment:      - tz=asia/shanghai

如下图:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com