容器重新启动时,docker内部的Jenkins会丢失配置
我已经按照下一个指南与詹金斯一起下载了docker图像 当我使用容器重新启动时,docker内部的Jenkins会丢失配置,jenkins,docker,Jenkins,Docker,我已经按照下一个指南与詹金斯一起下载了docker图像 当我使用docker start container name命令启动容器时,我可以从访问Jenkins 当我更改Jenkins配置并使用docker stop CONTAINERNAME和docker start CONTAINERNAME重新启动Jenkins时,问题出现了,我的Jenkins不包含我以前的任何配置更改 如何保持Jenkins配置?您需要将Jenkins配置作为卷装载,而-v标志将为您执行此操作。(在我的示例中,您可以忽
docker start container name
命令启动容器时,我可以从访问Jenkins
当我更改Jenkins配置并使用docker stop CONTAINERNAME
和docker start CONTAINERNAME
重新启动Jenkins时,问题出现了,我的Jenkins不包含我以前的任何配置更改
如何保持Jenkins配置?您需要将Jenkins配置作为卷装载,而
-v
标志将为您执行此操作。(在我的示例中,您可以忽略--privileged
标志,除非您计划在jenkins docker图像中构建docker图像)
-v
标志将把您的/var/jenkins_home
安装在容器外部的/home/jan/jenkins
中,在重建之间维护它
--name
,这样您就有了一个容器启动/停止的固定名称
然后,下次您想要运行它时,只需调用
docker start jenkins
我的理解是init脚本
/sbin/tini -- /usr/local/bin/jenkins.sh
正在通过提供的文件夹中启动时重置jenkins配置
JENKINS_HOME env var,
是否安装在docker vm外部
但是可以使用
配置/“配置系统”/“SCM同步配置”/Git
节
请参阅可能的详细配置您可以使用此docker compose文件:
version: '3.1'
services:
jenkins:
image: jenkins:latest
container_name: jenkins
restart: always
environment:
TZ: GMT
volumes:
- ./jenkins_host:/var/jenkins_home
ports:
- 8080:8080
tty: true
您只需将jenkins卷/jenkins_主机:/var/jenkins_home与主机文件夹共享除了显而易见的,如运行参数清除您应该禁用的映像之外,您还可以执行以下操作:
- 使用docker提交并重用提交的容器
- 使用docker卷装载写入本地文件系统的部件
- 我的最爱:使用命令: docker容器重新启动containername
好的,我知道了。但是我没有使用ssh密钥来实现这一点,当我重新启动容器时,这些密钥会一直存在。如何在dockerfile中指定:忽略此文件夹?或为什么jenkins文件夹被忽略?为什么我的钥匙还在使用?在哪里指定?您对容器所做的任何更改都将保留在那里,直到您重新构建它或构建一个新的容器,其中包括您的ssh密钥和jenkins配置。为了让它在两次重建之间存活下来,您需要将这些目录装载到容器外部。如果您的jenkins配置在重启之间消失,我需要有关您的设置的更多信息(例如,如果您的用户具有对目录的写访问权限,等等)。如果它在挂载后仍然消失,并且您可以在挂载的目录中看到它,那么很明显在启动时删除了它。
version: '3.1'
services:
jenkins:
image: jenkins:latest
container_name: jenkins
restart: always
environment:
TZ: GMT
volumes:
- ./jenkins_host:/var/jenkins_home
ports:
- 8080:8080
tty: true