解决docker容器与宿主机时间不同步问题

背景:通过date命令查看系统时间可以发现,两者相差了8小时。这是因为宿主机采用CST(China Shanghai Time,东八区时间),而docker镜像默认采用UTC(Coordinated Universal Time,标准时间),系统时区不一致导致的。

解决办法:

方法一、共享主机的localtime  

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

docker run -d -v /etc/localtime:/etc/localtime --rm -p8888:8080tomcat:latest

 方法二、复制主机的localtime 

docker cp /etc/localtime:【容器ID或者NAME】/etc/localtime

在复制完成后,重启Docker容器。

 方法三、创建自定义的dockerfile 

创建dockerfile文件,自定义该镜像的时间格式及时区。格式如下:

FROM tomcat:8.5.38-jre8-alpine #定义使用的基础镜像,根据实际修改

MAINTAINER "制作人自定义" #定义镜像发布人,根据实际修改

#定义环境变量

ENV  TIME_ZONE Asia/Shanghai

#dockerfile添加命令,Alpine系统并无timezone及locatime配置,所以需要先安装

RUN \

#安装tzdata安装包,

apk add --no-cache tzdata \

#设置时区

&& echo "${TIME_ZONE}" > /etc/timezone \

&& ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime

保存后,利用docker build命令生成镜像使用即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容