美文网首页
[Docker系列]:解决Docker容器内时间和宿主机不一致的

[Docker系列]:解决Docker容器内时间和宿主机不一致的

作者: IT云中子 | 来源:发表于2020-05-18 13:57 被阅读0次

    一、来龙去脉

    先通过命令:docker run -d --name="tomcat-test1" -p 9911:8080 tomcat 创建并启动一个tomcat容器。

    二、追根溯源

    通过命令:docker logs --tail="100" tomcat-test1 查看tomcat容器的日志信息,发现时间与当前时间不一致,相差8个小时;

    tomcat容器日志信息

    进入容器验证时区,执行命令:docker exec -it tomcat-test1 /bin/bash 进入容器,在容器内执行 date命令结果如下:

    容器内时区查看结果 宿主机时区查看结果

    通过容器内和宿主机的时区查看结果对比发现,容器内默认使用了标准时区,宿主机使用的是东八区时间。为了使容器内的时区与宿主机的保持一致,考虑将宿主机的时区相关的配置文件映射到容器中,宿主机的时区配置文件位于/etc/localtime。

    重新创建并运行一个tomcat容器,并将宿主机的时区文件映射到容器中,docker run -d --name="tomcat-test2" -p 9912:8080 -v /etc/localtime:/etc/localtime tomcat。

    进入新的容器内查看当前时间,发现新的容器内的时区已经和宿主机的时区一致了,结果如下图所示:

    容器内时区查看结果2

    退出容器,查看tomcat打印的日志信息,发现tomcat的打印的日志信息的时间仍然还存在时差。经研究发现,tomcat中jdk默认使用的时间文件为/etc/timezone,查看容器内的该文件,发现容器默认使用的是Etc/UTC时区,所以,修改时区文件/etc/timezone,将上海的时区写入文件中,命令:echo "Asia/Shanghai" > /etc/timezone

    容器默认的时区文件内容 修改时区文件内容

    重启容器,并查看日志信

    修改完配置文件后重启的日志信息

    发现修改完之后重启,日志信息与当前系统时间一致。

    三、皆大欢喜

    至此,tomcat容器内时间不一致的问题得以解决。

    相关文章

      网友评论

          本文标题:[Docker系列]:解决Docker容器内时间和宿主机不一致的

          本文链接:https://www.haomeiwen.com/subject/fksuohtx.html