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部署系统时间不正确内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Java实现收发电子邮件功能

    基于Java实现收发电子邮件功能

    Email就是电子邮件,我们平常使用的QQ邮箱,网易邮箱,Foxmail都是用来收发邮件的,利用Java程序也可以完成收发电子邮件的功能,本文就来为大家详细讲讲实现步骤
    2022-07-07
  • 关于SpringCloudStream配置问题

    关于SpringCloudStream配置问题

    这篇文章主要介绍了关于SpringCloudStream配置问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 基于JavaMail的常用类详细介绍

    基于JavaMail的常用类详细介绍

    以下是对JavaMail的常用类进行了详细分析的介绍,需要的朋友可以过来参考下
    2013-09-09
  • deepseek本地部署及java、python调用步骤详解

    deepseek本地部署及java、python调用步骤详解

    这篇文章主要介绍了如何下载和使用Ollama模型,包括安装JDK 17及以上版本和Spring Boot 3.3.6,配置pom文件和application.yml,创建Controller,以及使用Python调用模型,需要的朋友可以参考下
    2025-02-02
  • SpringBoot错误处理流程深入详解

    SpringBoot错误处理流程深入详解

    在项目开发中出现异常时很平常不过的事情,我们处理异常也有很多种方式。本文将详细为大家讲解SpringBoot实现异常处理几种方法,感兴趣的可以学习一下
    2022-10-10
  • netty服务端处理请求联合pipeline分析

    netty服务端处理请求联合pipeline分析

    这篇文章主要为大家介绍了netty服务端处理请求联合pipeline示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • springcloud如何使用Feign后台内部传递MultipartFile

    springcloud如何使用Feign后台内部传递MultipartFile

    这篇文章主要介绍了springcloud如何使用Feign后台内部传递MultipartFile,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java使用CompletableFuture实现异步编程

    Java使用CompletableFuture实现异步编程

    在现代 Java 开发中,异步编程是一项重要技能,而 CompletableFuture 是从 Java 8 开始提供的一个功能强大的工具,用于简化异步任务的编写和组合,本文将详细介绍 CompletableFuture 的基本使用和一些常见的应用场景,需要的朋友可以参考下
    2025-01-01
  • K8S(Docker)如何优雅的关闭SpringBoot微服务

    K8S(Docker)如何优雅的关闭SpringBoot微服务

    这篇文章主要介绍了K8S(Docker)如何优雅的关闭SpringBoot微服务问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-01-01
  • SpringBoot中JPA更新时部分字段无效

    SpringBoot中JPA更新时部分字段无效

    本文主要介绍了SpringBoot中JPA更新时部分字段无效,在通过注解自动更新时,部分字段在调试时可以找到,却没有被自动更新到数据库中,下面就介绍一下解决方法
    2023-04-04

最新评论