❝
因:最近在捣鼓定时任务的时候发现我本地调试没问题,发到服务器上之后发现实际生效时间比设定的晚了8小时,于是记录一下解决方案,以便于日后查询!
❞
linux服务的时间
查看时间
使用date
dete
# 输出结果
Fri Jun 2 10:51:20 CST 2023
使用timedatectl
timedatectl
# 输出结果
Local time: Fri 2023-06-02 11:11:56 CST
Universal time: Fri 2023-06-02 03:11:56 UTC
RTC time: Fri 2023-06-02 03:11:55
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
小贴士:这里讲解一下常见的两种时间
UTC时间:是零时区的时间,不同国家会在该时间的基础上进行调整
CST时间: 中央标准时间一般代表的是(美国:零区时减6个小时)、(澳大利亚:零区时加9个半小时)、(中国:零区时加8个小时)、(古巴:零区时减4个小时)
所以我们一般CST时间就足够了!
改变时间
查看可用时区
我们可以使用“ls”命令查看/usr/share/zoneinfo目录,它包含了所有可用的时区
ls /usr/share/zoneinfo
# 输出结果太多了,就不展示了
使用timedatectl更改时区
timedatectl set-timezone 时区
# 这里的时区就是上面ls里面的
docker容器的时间
从上面的结果可以看出linux的时间跟我本地的时间是一致的,那就可能是docker容器内部时间的问题了!
查看时间
查看容器id
这里简单介绍一下怎么查看正在运行容器
docker ps
# 这里就简单展示一下我的nginx容器
#后面命令就拿这个容器id 8b3909e33fcb来介绍
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES COMMAND CREATED STATUS PORTS NAMES
8b3909e33fcb nginx "/docker-entrypoint.…" 2 months ago Up 2 months 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp mynginx
进入容器
docker exec -it 8b3909e33fcb sh
# 上面的命令就进入容器内部的shell了
查看容器时间
其实跟上面差不多
date
# 输出结果
Fri Jun 2 02:34:29 UTC 2023
发现这里的时间有问题了,这就是为什么晚了8个小时的原因了,接下来改变它就行
docker cp /usr/share/zoneinfo/Asia/Shanghai 8b3909e33fcb:/usr/share/zoneinfo/Asia
# 输出结果
Successfully copied 2.56kB to 8b3909e33fcb:/usr/share/zoneinfo/Asia
这个时候再查看就发现时间变过来了,至此服务器与docker容器的时间不一致问题解决!
但我的这个问题还没有彻底解决,因为我是用Dockerfile构建的镜像,所以上述修改之后,我发现项目里面日志的时间还不对,说明项目里面时间还是有问题,这个后续有时间写Dockerfile的时候具体讲解!
看到这里,就说明你对docker了解或者想要了解,可以关注公众号,后面不定时更新,当然也会更新其他内容,希望你喜欢!
下期见
原文始发于微信公众号(分享是个有趣的东西):Docker修改容器内部时间
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/158966.html