使用docker compose安装
services:
jenkins:
image: jenkins/jenkins:lts-jdk11 # 使用 LTS 长期支持版
container_name: jenkins
restart: unless-stopped
ports:
- "7000:8080" # Web 访问端口
- "7001:50000" # Agent 通信端口
volumes:
# 使用宿主机的localtime和timezone,后面的localtime:ro和timezone:ro表示只读模式
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./jenkins_data:/var/jenkins_home # 持久化数据卷
- /var/run/docker.sock:/var/run/docker.sock # 允许容器内使用宿主机 Docker
environment:
- TZ=Asia/Shanghai # 设置时区
- JAVA_OPTS=-Dhudson.model.UpdateCenter.updateCenterUrl=https://mirrors.huaweicloud.com/jenkins/updates/dynamic-stable-2.462.3/ -Duser.timezone=Asia/Shanghai -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai -Dhudson.model.DownloadService.noSignatureCheck=true
容器启动之后,容器内部的/etc/localtime
和date -R
可能不一致,此时应该以date -R
的为准
docker容器时区问题
查看所有容器的时区
docker ps --format '{{.Names}}' | xargs -I {} sh -c 'echo -n "{}: " && docker exec {} date'
查看单个容器时区(如果与宿主机: date -R的结果不一致,就说明要调整)
docker exec jenkins date -R
查看容器中运行中的java时区
docker exec jenkins bash -c "java -XshowSettings:properties -version"
进入容器中查看java运行状态
docker docker exec -it jenkins /bin/bash
ps -ef | grep java
jps -lv