来自Running容器的新docker图像不保存更新的值

时间:2018-01-12 10:35:39

标签: docker jenkins docker-container

我使用了dockerhub(https://github.com/jenkinsci/docker

中的Jenkins docker图像
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
RUN apt-get install -y ldap-utils curl wget vim nano sudo
RUN adduser jenkins sudo
User jenkins
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
EXPOSE 8080
EXPOSE 50000

docker build命令已成功执行,容器也已成功启动。

Docker构建命令:

docker build --no-cache -t myjenkins .

Docker容器命令:

docker run --net=host --name=my_jenkins -d -p 8080:8080 -p 50000:50000 myjenkins

然后我登录Jenkins GUI,创建了一个新用户并更新了插件。

然后使用docker commit命令创建了一个新图像。主映像ID为c068f8d9a060。新创建的泊坞窗图像ID为de0789b77703

docker commit c052fd7a26b3 almjenkins:version1
root@vagrant-ubuntu-trusty:~/jenkins# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
almjenkins          version1            de0789b77703        13 minutes ago      1.04GB
myjenkins           latest              c068f8d9a060        4 hours ago         1.03GB

我执行了docker run命令从我的新图像启动Jenkins。

docker run --net=host --name=alm_jenkins -d -p 8080:8080 -p 50000:50000 almjenkins:version1

当我访问Jenkins GUI时,我无法在新图像中找到更新。

1 个答案:

答案 0 :(得分:0)

正如docker commit的官方文档所述:

  

提交操作不包括容器内安装的卷中包含的任何数据。

保存所有jenkins配置的jenkins_home在jenkins的Dockerfile中声明为一个卷。因此,commit命令不会包含配置(作业,节点,插件......)

解决方案是构建包含配置的自定义docker镜像。

FROM jenkins/jenkins

COPY jobs /usr/share/jenkins/ref/jobs/
RUN /usr/local/bin/install-plugins.sh workflow-aggregator:2.5 ... # Install all the plugins that you need

您可以从旧容器中提取jobs文件夹,并将其添加到新的on:

docker cp <container-name>:/var/jenkins_home/jobs jobs