jenkins通过docker部署后系统时间不正确问题的详细解决方法

 更新时间:2025年06月03日 10:01:15   作者:wey chan  
这篇文章主要介绍了jenkins通过docker部署后系统时间不正确问题的详细解决方法,Jenkins时间显示慢8小时通常由JVM时区未正确配置引发,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

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

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

1. 检查 Jenkins 的 JVM 时区配置

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

查看 Jenkins 的当前时区

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

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

2. 修改 Jenkins 的 JVM 时区

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

在运行 Jenkins 容器时,通过环境变量 JAVA_OPTS 或 JENKINS_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 容器已经运行,可以通过修改启动脚本设置时区。

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

3. 验证 Jenkins 时区

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

4. 检查 Jenkins 系统配置

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

检查 Jenkins 系统时间

  • 登录 Jenkins 控制台。
  • 进入 Manage Jenkins > System Information
  • 查找 user.timezone 和 user.country,确保时区和国家/地区设置正确。

安装并配置 Time Zone 插件

  • 登录 Jenkins 控制台。
  • 进入 Manage Jenkins > Manage Plugins
  • 在 Available 选项卡中搜索 Time Zone 插件并安装。
  • 安装完成后,进入 Manage Jenkins > Configure System
  • 找到 Time Zone 配置项,设置正确的时区(例如 Asia/Shanghai)。
  • 保存配置。

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 小时。
  • 解决方法

    通过 JAVA_OPTS 或 JENKINS_JAVA_OPTIONS 设置 JVM 时区。

    安装并配置 Jenkins 的 Time Zone 插件。

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

到此这篇关于jenkins通过docker部署后系统时间不正确问题的文章就介绍到这了,更多相关jenkins docker部署系统时间不正确内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring中的BeanFactory与FactoryBean的讲解

    spring中的BeanFactory与FactoryBean的讲解

    今天小编就为大家分享一篇关于spring中的BeanFactory与FactoryBean的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Java中Builder模式的实现详解

    Java中Builder模式的实现详解

    在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。下面这篇文章主要给大家介绍了在Java各个版本中Builder模式实现的相关资料,文中介绍的非常详细,需要的朋友可以参考学习。
    2017-05-05
  • Java多线程处理千万级数据更新操作

    Java多线程处理千万级数据更新操作

    这篇文章主要为大家详细介绍了Java如何通过多线程处理千万级数据更新操作,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • Spark MLlib随机梯度下降法概述与实例

    Spark MLlib随机梯度下降法概述与实例

    这篇文章主要为大家详细介绍了Spark MLlib随机梯度下降法概述与实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 在spring boot中使用java线程池ExecutorService的讲解

    在spring boot中使用java线程池ExecutorService的讲解

    今天小编就为大家分享一篇关于在spring boot中使用java线程池ExecutorService的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • eclipse老是自动跳到console解决办法

    eclipse老是自动跳到console解决办法

    eclipse启动服务后,想看一些properties信息或者别的,但老是自动跳转到console页面,本文给大家介绍了解决办法,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • java UUID&雪花算法生成和使用场景详解

    java UUID&雪花算法生成和使用场景详解

    UUID和雪花算法都是用于生成唯一标识符的有效工具,它们各有优势:UUID简单易用,但长度较长,适用于分布式系统;雪花算法生成的ID较短且有序,适用于需要保证顺序的场景,在选择算法时,需要考虑系统架构、性能需求和顺序需求等因素
    2025-01-01
  • Java操作集合工具类Collections使用详解

    Java操作集合工具类Collections使用详解

    这篇文章主要介绍了java操作集合工具类Collections使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java spring的三种注入方式详解流程

    Java spring的三种注入方式详解流程

    Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率
    2021-10-10
  • Java十分钟精通异常处理机制

    Java十分钟精通异常处理机制

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等
    2022-03-03

最新评论