Docker(五):Docker 时区问题

前篇:Docker(一):Doker介绍

           Docker(二):安装

           Docker(三):Docker 部署 SpringBoot 项目

           Docker(四):Docker 部署 tomcat 运行war包


一、问题描述

遇到docker时间不一致,大多是因为默认时区没有设置导致,一般在宿主机上使用 date 命令看到的是 CTS 时间,进入docker后使用 date 命令查看的是 UTC 时间。
CTS: China Standard Time,UTC+8:00 中国沿海时间(北京时间)
UTC: Universal Time Coordinated 世界协调时间

所以我们需要修改 docker 容器的时区,针对不同场景修改的方式也不一样,大家可以参考一下选择最适合自己的修改方式


二、修改 Dockerfile 文件方式更改时区

适用场景:如果我们是用 Dockerfile 方式构建的镜像,那么我们可以修改 Dockerfile 让构建的镜像直接为东八区

在 Dockerfile 文件中 添加

ENV TZ=Asia/Shanghai

重新构建镜像,查看时间,发现已经是东八区,成功。


三、新增 run 参数更改时区

 适用场景:不想重新构建镜像,删除容器重新部署对程序本身没有影响

   删除 容器

docker rm -f tomcat

 run 的时候加上参数 

-e TZ="Asia/Shanghai"

例如

docker run  -e TZ="Asia/Shanghai" -p 8090:8090 -d --name ch ch/ch

-e 时区改为东八区,默认时区为0区

-p 暴露端口 前面的端口(docker tomcat 容器端口) 后面的端口(宿主机器端口,我们要在浏览器访问的端口)

-d 后台运行(不会在控制台输出日志)

完成后 查看时间,已经是东八区,成功


四、修改 tomcat 配置文件更改时区

适用场景:tomcat 容器运行的程序,不想重新构建镜像容器

注意:交付的Docker映像已修剪到最低限度-因此,拉取的容器未安装任何编辑器,所以无法 进入到容器编辑配置文件。

所以得将配置文件 copy 一份到本地

docker cp tomcat:/usr/local/tomcat/bin/catalina.sh .

修改 catalina.sh 配置文件 

找到 JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"   这一行  行尾添加  Duser.timezone=GMT+08

JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Duser.timezone=GMT+08"

然后将修改后的配置文件,覆盖掉容器内的

docker cp .\catalina.sh tomcat:/usr/local/tomcat/bin/catalina.sh

最后重启容器

docker restart tomcat

发现时区已经改为 东八区 ,成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值