背景:通过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命令生成镜像使用即可。