摘要:

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编辑命令了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐