Docker Java应用日志时间和容器时间不一致
摘要:1)在docker容器和系统时间不一致是因为docker容器的原生时区为0时区,而国内系统为东八区。2)还有容器中运行的java应用打出的日志时间和通过date -R方式获取的容器标准时间有八个小时时间差。
摘要:
1)在docker容器和系统时间不一致是因为docker容器的原生时区为0时区,而国内系统为东八区。
2)还有容器中运行的java应用打出的日志时间和通过date -R方式获取的容器标准时间有八个小时时间差。
也就是容器时间和系统时间一致,但是部署的应用和容器时间不一致。Tomcat中部署java应用为例。
1、 docker新建容器时,为了保证容器时区和系统时区相同,需要挂载docker的/etc/localtime到系统的/etc/localtime
-v /etc/localtime:/etc/localtime:ro
在系统路径 /usr/share/zoneinfo 下游很多时区文件,可以自己设置,copy时区文件到 /etc 重命名localtime文件即可,如果容器没有挂载时区目录到系统目录,也可进入容器内部手动复制/usr/share/zoneinfo下和系统时区相同文件,到/etc 重命名localtime文件
例如:使用上海时区
1)进入容器
docker exec -t -i c360cc412528 /bin/bash // c360cc412528 为容器id
2)在/usr/share/zoneinfo目录下找上海时区
cd /usr/share/zoneinfo/Asia(亚洲-)
3)复制上海时区到 /etc 重命名localtime文件
copy Shanghai /etc/localtime
4)重启容器后,容器时间和系统时间一致。
注意:建议挂载docker的/etc/localtime到系统的/etc/localtime
2、 docker容器中运行的java应用打出的日志时间和通过date -R方式获取的容器标准时间有八个小时时间差。 java应用和容器时间不一致,相差8个小时。这时需要大家进入容器修改tomcat目录下的 lib/catalina 文件找到 JAVA_OPTS,增加下面设置:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"
重启容器,应用时间和容器时间就一致了。
注意下:进入容器后,有的人无法使用vim命令编辑,这时需要这么做:
apt-get update //同步 /etc/apt/sources.list和/etc/apt/sources.list.d中列出的源的索引,这样才能获取到最新的软件包。
apt-get install vim //安装vim包
之后就可以用vim编辑命令了。
更多推荐
所有评论(0)