当前位置: 代码网 > it编程>开发工具>Docker > jenkins通过docker部署后系统时间不正确问题的详细解决方法

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

2025年06月03日 Docker 我要评论
前言如果 jenkins 系统里的显示时间仍然慢了 8 小时,这通常是因为 jenkins 的jvm 时区配置未正确设置。jenkins 是基于 java 的应用程序,它的时间由 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部署系统时间不正确内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com