我使用了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时,我无法在新图像中找到更新。
答案 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