Docker宿主机时间与容器时间不一致问题

查看宿主机时区和时间:

[root@iZbp19plg6p1ajmesvagqvZ ~]# timedatectl Local time: 五 2023-07-07 15:28:28 CST Universal time: 五 2023-07-07 07:28:28 UTC RTC time: 五 2023-07-07 07:28:27 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: n/a RTC in local TZ: no [root@iZbp19plg6p1ajmesvagqvZ ~]# date 2023年 07月 07日 星期五 15:30:10 CST

进入容器查看容器时间:

[root@iZbp19plg6p1ajmesvagqvZ ~]# docker exec -it hello-jenkins bash root@5cb7e14e4f12:/# date Fri Jul 7 07:32:47 UTC 2023

可以看到,默认容器的时间是UTC标准时间,而我们的宿主机使用的是东八区时间,此时可以在容器启动时挂载本机时间到容器中:

-v /etc/localtime:/etc/localtime

如果容器不方便重新创建,可以复制一份过去:

docker cp /etc/localtime {容器id或容器name}:/etc/localtime

再次查看容器时间:

[root@iZbp19plg6p1ajmesvagqvZ ~]# docker exec -it hello-jenkins bash root@a6cbf1b8666c:/# date Fri Jul 7 15:44:27 CST 2023

此时,容器时间和宿主机保持一致。

如果容器运行的是Java程序,比如在代码中输出指定格式时间,调用方法时依然返回标准时间:

return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
// 2023-07-07 07:49:41

在启动容器加上指定时区:

-e TZ="Asia/Shanghai"

此时,输出时间变为:2023-07-07 15:53:49


__EOF__

本文作者爱就码上行动
本文链接https://www.cnblogs.com/coderxin/p/17535234.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   爱就码上行动  阅读(196)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2021-07-07 antd vue表格合并按钮、样式列
点击右上角即可分享
微信分享提示