如何升级Docker容器中运行的Jenkins且不丢失数据?
Jenkins容器升级保留配置的解决方案
核心思路:通过数据持久化保留Jenkins配置
Jenkins的所有任务、插件、配置都存储在容器内的/var/jenkins_home目录,只要把这个目录的内容持久化到宿主机或Docker数据卷,升级时复用即可。
情况1:之前未做数据持久化(旧容器直接运行)
- 停止旧容器
docker stop <旧容器ID/名称> - 导出旧容器的Jenkins数据到宿主机
docker cp <旧容器ID/名称>:/var/jenkins_home ./jenkins-backup - 创建Docker数据卷(推荐)或准备宿主机目录
- 创建数据卷:
docker volume create jenkins-data - 将备份数据导入数据卷(借助临时busybox容器完成拷贝):
docker run --rm -v jenkins-data:/var/jenkins_home -v $(pwd)/jenkins-backup:/backup busybox cp -r /backup/. /var/jenkins_home/
- 创建数据卷:
- 拉取最新Jenkins镜像
docker pull jenkins/jenkins:lts # 优先选择稳定版,也可使用latest标签 - 启动新容器并挂载数据卷
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home --name jenkins-new jenkins/jenkins:lts
情况2:之前已挂载宿主机目录或数据卷
直接复用已有的持久化存储即可,步骤更简洁:
- 停止旧容器
docker stop <旧容器ID/名称> - 拉取最新镜像
docker pull jenkins/jenkins:lts - 删除旧容器(可选,清理无用容器)
docker rm <旧容器ID/名称> - 启动新容器,复用原有挂载
如果是挂载宿主机目录:
如果是使用数据卷:docker run -d -p 8080:8080 -p 50000:50000 -v /path/to/your/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins:ltsdocker run -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home --name jenkins jenkins/jenkins:lts
注意事项
- 升级前务必备份
jenkins_home目录,避免意外数据丢失 - 启动新容器后,可能需要在Jenkins后台升级插件(新版本Jenkins可能要求插件兼容)
- 若使用自定义Jenkins镜像(比如预装插件),需基于最新官方镜像重新构建自定义镜像,保留原有定制内容
内容的提问来源于stack exchange,提问作者jaqen_hgar
相关产品推荐
相关产品推荐

