Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';docker是否提交具有自定义配置的Jenkins容器?_Jenkins_Docker - Fatal编程技术网

为什么可以';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映像。。。