【转】 Jenkins修改时区(Docker)

本文介绍了解决Jenkins Docker容器中时区错误的方法,包括修改/etc/localtime和/etc/timezone文件,确保Jenkins显示的时区与本地时区一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

通过官方的jenkins容器运行jenkins服务,但是发现jenkins的时间与docker容器内的时间相同,但都与北京时间正好差8个小时。基本确定时区问题

查看jenkins的docker容器时间:

docker exec

查看Jenkins的时间

在“jenkins的UI-》系统管理-》系统信息”中有user.timezone的字段

分析

时间相差8个小时,基本可以确定时区问题。所以上网搜索了些内容,基本解决办法如下

方法1

jenkins官方修改时区的方法。但是基本都是通过修改jenkins、java的参数来达到目的的。目前使用docker容器没办法处理。

方法2

修改/etc/localtime文件的方法。按照这个方法处理了,但是容器的系统时间与当地时间相同了,但是jenkins的时间还是相差8个小时。

再分析

既然docker容器的时间正确了,但是jenkins的时间还是不对的,说明jenkins的时区使用的不是/etc/localtime,而是另有他处。

在jenkins-》系统管理-》系统信息中可以看到有关时区的是user.timezone属性值是Etc/UTC。哪里存放的这个值呢,应该是/etc/timezone了。所以尝试下/etc/timezone的设置。

$docker exec my-jenkins cat /etc/timezone

Etc/UTC

可以看到时区是Etc/UTC,基本上可以确定是这里导致的了

备注:通过验证debian系列才有timezone这个文件的,在centos中是没有这个文件的。所以确定jenkins的docker容器是基于debian系的linux

解决

修改/etc/localtime,修改容器的时间
修改/etc/timezone,修改jenkins的时区
最终构建docker容器的命令如下(如有其他参数,请自行添加其他参数)

docker run -d --name ci --privileged=true -v /etc/localtime:/etc/localtime -v /[my_path]/timezone:/etc/timezone jenkins

或者

docker run -d --name ci --privileged=true -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime -v /[my_path]/timezone:/etc/timezone jenkins

将/[my_path]/timezone修改为对应的路径
如果docker宿主机系统中不存在timezone文件,可以自行创建timezone文件(或者从别的地方拷贝),timezone文件的内容如下:
Asia/Shanghai

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值