You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于运行中容器创建的Docker新镜像未保留更新内容问题

问题原因

官方Jenkins Docker镜像已经将/var/jenkins_home目录声明为VOLUME(Docker用于持久化数据的特殊目录),而docker commit有个核心限制:它不会包含VOLUME目录下的任何数据。你在Jenkins里创建的用户、更新的插件等所有配置,其实都存储在/var/jenkins_home里,所以通过docker commit生成的新镜像完全没有这些内容,启动后自然回到初始状态。

解决方案

1. 放弃docker commit,用Dockerfile构建可复用镜像(最佳实践)

Docker的核心思想是用代码定义镜像,通过修改Dockerfile固化你的Jenkins配置:

  • 如果你需要预安装插件,把所有需要的插件(包括后来手动更新的)更新到plugins.txt文件,重新执行docker build构建镜像即可。
  • 如果你需要预配置用户或全局设置,可以把配置文件复制到/usr/share/jenkins/ref/目录(Jenkins启动时会自动将这个目录的内容同步到/var/jenkins_home,仅当目标目录为空时生效)。示例Dockerfile片段:
    # 在USER jenkins之后添加
    COPY config.xml /usr/share/jenkins/ref/config.xml
    COPY users/ /usr/share/jenkins/ref/users/
    

2. 用数据卷持久化Jenkins数据(推荐用于运行时动态配置)

如果需要保留容器运行后的动态修改(比如手动更新的插件、新建的用户),应该在启动容器时挂载Docker数据卷,而非依赖docker commit:

  • 第一次启动容器时挂载卷:
    docker run --net=host --name=my_jenkins -d -v jenkins_data:/var/jenkins_home -p 8080:8080 -p 50000:50000 myjenkins
    
  • 后续启动新容器时,只要挂载同一个jenkins_data卷,就能直接复用之前的所有配置:
    docker run --net=host --name=alm_jenkins -d -v jenkins_data:/var/jenkins_home -p 8080:8080 -p 50000:50000 myjenkins
    

3. 强制将VOLUME数据打包进新镜像(应急方案,不推荐)

如果一定要基于现有容器创建包含配置的镜像,可以先把VOLUME数据复制出来,再通过Dockerfile打包:

  1. 从运行的容器中复制/var/jenkins_home到本地:
    docker cp c052fd7a26b3:/var/jenkins_home ./jenkins_local_data
    
  2. 创建新的Dockerfile,复制数据并修正权限:
    FROM jenkins/jenkins:lts
    USER root
    ENV http_proxy http://bc-proxy-vip.de.pri.o2.com:8080
    ENV https_proxy http://bc-proxy-vip.de.pri.o2.com:8080
    RUN apt-get update && apt-get install -y ldap-utils curl wget vim nano sudo
    RUN adduser jenkins sudo
    # 复制本地Jenkins数据到镜像
    COPY jenkins_local_data /var/jenkins_home
    # 修正目录权限,确保jenkins用户能访问
    RUN chown -R jenkins:jenkins /var/jenkins_home
    USER jenkins
    EXPOSE 8080
    EXPOSE 50000
    
  3. 构建新镜像:
    docker build --no-cache -t almjenkins:version1 .
    

内容的提问来源于stack exchange,提问作者user2439278

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:00:57