📦 归档笔记 — 原创建于 WizNote,仅作归档展示;观点以当年为准,非最新。

Docker容器时间与宿主机时间不同步

创建时间2019-08-26最后修改2019-08-26原位置/程序员成长之旅/Docker学习/字数440
目录:程序员成长之旅/Docker学习

在Docker容器运行后,可能会发现容器时间与宿主机时间不一致,一般会差8个小时。这样会造成在容器中运行的web程序打出的日志时间与实际时间不一致,如果web程序中有定时任务也会造成影响等,需要对宿主机和容器进行时间同步。

统一两者的时区有下面几种方法

1、共享主机的localtime

#创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的。

docker run -it -d --name web -v /etc/localtime:/etc/localtime:ro centos:1.0 /bin/bash

2、复制主机的localtime

docker cp /etc/localtime 753f856bca45:/etc/

3、创建dockerfile文件的时,自定义该镜像的时间格式及时区。在dockerfile文件里添加下面内容:

#设置时区

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

保存后,利用docker build命令生成镜像使用即可,使用dockerfile创建的镜像的容器改变了容器的时区,这样不仅保证了容器时间与宿主机时间一致(假如宿主机也是CST),并且像上面使用tomcat作为父镜像的话,JVM的时区也是CST,这样tomcat的日志信息的时间也是和宿主机一致的,像上面那两种方式只是保证了宿主机时间与容器时间一致,JVM的时区并没有改变,tomcat日志的打印时间依旧是UTC。

————————————————

版权声明:本文为CSDN博主「VacantYang」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/lin521lh/article/details/78349739