jenkins通过docker部署后系统时间不正确的问题

如果 Jenkins 系统里的显示时间仍然慢了 8 小时,这通常是因为 Jenkins 的 JVM 时区配置 未正确设置。Jenkins 是基于 Java 的应用程序,它的时间由 JVM 的默认时区决定。

以下是解决 Jenkins 系统时间显示慢 8 小时问题的详细方法:


1. 检查 Jenkins 的 JVM 时区配置

Jenkins 的时区由 JVM 的 user.timezone 参数决定。如果未显式设置,JVM 会使用默认时区(通常是 UTC)。

查看 Jenkins 的当前时区
  1. 登录 Jenkins 控制台。
  2. 进入 Manage Jenkins > System Information
  3. 查找 user.timezone 属性,确认当前时区。

如果 user.timezone 显示为 UTC 或其他非预期时区,则需要修改 JVM 的时区配置。


2. 修改 Jenkins 的 JVM 时区

方法 1:通过环境变量设置时区

在运行 Jenkins 容器时,通过环境变量 JAVA_OPTSJENKINS_JAVA_OPTIONS 设置 JVM 时区。

使用 docker run 命令
docker run -d \
  --name jenkins \
  -p 8080:8080 -p 50000:50000 \
  -e JAVA_OPTS="-Duser.timezone=Asia/Shanghai" \
  jenkins/jenkins:lts
使用 docker-compose

docker-compose.yml 中添加环境变量:

version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    ports:
      - "8080:8080"
      - "50000:50000"
    environment:
      - JAVA_OPTS=-Duser.timezone=Asia/Shanghai
方法 2:修改 Jenkins 容器的启动脚本

如果 Jenkins 容器已经运行,可以通过修改启动脚本设置时区。

  1. 进入 Jenkins 容器:
    docker exec -it jenkins /bin/bash
    
  2. 编辑 Jenkins 启动脚本(通常位于 /usr/local/bin/jenkins.sh):
    vi /usr/local/bin/jenkins.sh
    
  3. 找到 exec java 行,添加 -Duser.timezone=Asia/Shanghai 参数:
    exec java -Duser.timezone=Asia/Shanghai -jar /usr/share/jenkins/jenkins.war "$@"
    
  4. 保存并退出,然后重启容器:
    docker restart jenkins
    

3. 验证 Jenkins 时区

  1. 登录 Jenkins 控制台。
  2. 进入 Manage Jenkins > System Information
  3. 查找 user.timezone 属性,确认时区已正确设置为 Asia/Shanghai

4. 检查 Jenkins 系统配置

如果 JVM 时区配置正确,但 Jenkins 的时间仍然不正确,可能是 Jenkins 系统配置问题。

检查 Jenkins 系统时间
  1. 登录 Jenkins 控制台。
  2. 进入 Manage Jenkins > System Information
  3. 查找 user.timezoneuser.country,确保时区和国家/地区设置正确。
安装并配置 Time Zone 插件
  1. 登录 Jenkins 控制台。
  2. 进入 Manage Jenkins > Manage Plugins
  3. Available 选项卡中搜索 Time Zone 插件并安装。
  4. 安装完成后,进入 Manage Jenkins > Configure System
  5. 找到 Time Zone 配置项,设置正确的时区(例如 Asia/Shanghai)。
  6. 保存配置。

5. 检查宿主机和容器时间

确保宿主机和容器的时间同步。

检查宿主机时间
date
检查容器时间
docker exec jenkins date

如果宿主机和容器时间不一致,可以参考以下方法同步时间:

  • 挂载宿主机的 /etc/localtime/etc/timezone
    docker run -d \
      --name jenkins \
      -p 8080:8080 -p 50000:50000 \
      -v /etc/localtime:/etc/localtime:ro \
      -v /etc/timezone:/etc/timezone:ro \
      jenkins/jenkins:lts
    

6. 重启 Jenkins 服务

完成以上配置后,重启 Jenkins 服务以应用更改。

重启 Jenkins 容器
docker restart jenkins

总结

  • 根本原因:Jenkins 的 JVM 时区未正确配置,导致时间显示慢 8 小时。
  • 解决方法
    1. 通过 JAVA_OPTSJENKINS_JAVA_OPTIONS 设置 JVM 时区。
    2. 安装并配置 Jenkins 的 Time Zone 插件。
    3. 确保宿主机和容器的时间同步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wey chan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值