问题描述

在Docker容器运行起来以后,可能会发现容器时间和宿主服务器时间不一致问题。

解决方案

1.利用Dockerfile创建镜像时。在Dockerfile中加入

FROM openjdk:8-jre-alpine
#设置时区
RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone
# 简略版
#RUN echo "Asia/shanghai" > /etc/timezone;
COPY test.jar test.jar
CMD ["java","-Xms256m","-Xmx512m","-Xss1024K","-jar","/test.jar"]

2.挂载宿主机的localtime文件

docker run --privileged --restart=always -ti -d -p 54210:54210 -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime --name docker_nginx nginx

注意:一般也将时区文件(timezone)挂载上,不过需要注意的是==有的linux系统中timezone文件可能在timezone文件夹中,所以注意挂载路径问题==。

3.复制宿主机的localtime文件

docker cp /etc/localtime [容器ID]:/etc/

Q.E.D.


仰望星空,还需脚踏实地。