为什么可以';docker是否提交具有自定义配置的Jenkins容器?
我拉了一张詹金斯的照片,然后启动了它。然后我在那个容器上做了一些配置。现在我想将所有配置保存到一个新映像中。下面是我使用的命令:为什么可以';docker是否提交具有自定义配置的Jenkins容器?,jenkins,docker,Jenkins,Docker,我拉了一张詹金斯的照片,然后启动了它。然后我在那个容器上做了一些配置。现在我想将所有配置保存到一个新映像中。下面是我使用的命令: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f214096e4847 jenkin
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f214096e4847 jenkins "/bin/tini -- /usr/lo" About an hour ago Up 1 seconds 50000/tcp, 0.0.0.0:8081->8080/tcp ci
从上面的输出中,您可以看到jenkins容器f214096e4847正在运行
现在,我使用以下命令提交更改并创建新图像:
$ docker commit f214096e4847 my_ci/1.0
sha256:d83801a700c4060326a5209b87281bfb0e93f46207d960038ba2d87628ddb90c
然后我停止当前容器并从我的\u ci/1.0映像运行一个新容器:
$docker站f214096e4847
f214096e4847
$docker run-d——名称myci-p 8081:8080 my_ci/1.0
aba1660be200291d499bf00d851a854c724193c0ee2afb3fd318c36320b7637e
但是新的容器没有包含我所做的任何更改。它看起来像一个容器是从原始的詹金斯图像创建的。如何在使用docker commit时持久化我的数据
EDIT1
我知道我可以添加一个卷来保存配置数据,如下所示:
-v my_path:/var/jenkins_home
但我真的想把它保存在docker的图片上。因此,用户不需要从其主机提供配置。重要的是要知道这不是一个好方法。正如在评论中告诉你的。建议的方法是装载卷 但是如果你真的想在图像中显示你的音量,我可以提出另一种方法。您可以根据官方图像创建自己的图像: 克隆原始映像的git repo
git clone https://github.com/jenkinsci/docker.git
其中包括以下内容:
CONTRIBUTING.md Jenkinsfile docker-compose.yml install-plugins.sh jenkins-volume plugins.sh update-official-library.sh
Dockerfile README.md init.groovy jenkins-support jenkins.sh tests weekly.sh
您只需在Dockerfile
中进行一次编辑。用mkdir
命令替换VOLUME
# Jenkins home directory is a volume, so configuration and build history
# can be persisted and survive image upgrades
#VOLUME /var/jenkins_home
RUN mkdir -p /var/jenkins_home
重建您自己的图像:
docker build -t my-jenkins:1.0
开始你自己的jenkins+安装一些插件+创建一些工作
docker run -d -p 8080:8080 -p 50000:50000 my-jenkins:1.0
当您准备好创建所需的作业时,可以将容器作为映像提交
docker commit 30c5889032a8 my-jenkins-for-developers:1.0
默认情况下,这个最新的jenkins容器将包含您的插件+作业
docker run -d -p 8080:8080 -p 50000:50000 my-jenkins-for-developers:1.0
这在你的情况下有效。但正如我所说。不推荐这样做。它使您的内容依赖于图像。因此,当您想要执行更新时,这会更加困难。此外,您的映像可能太大(大小)。不确定docker提交部分,但如果您想保留数据(JENKINS_HOME),您可以运行容器,将卷存储到永久性存储-docker run<代码>-v my_path:/var/jenkins_home是的,它可以工作。但我真的想在docker映像中保留jenkins配置。您将无法更新到新的jenkins映像。。。