Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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图像 当我使用docker start container name命令启动容器时,我可以从访问Jenkins 当我更改Jenkins配置并使用docker stop CONTAINERNAME和docker start CONTAINERNAME重新启动Jenkins时,问题出现了,我的Jenkins不包含我以前的任何配置更改 如何保持Jenkins配置?您需要将Jenkins配置作为卷装载,而-v标志将为您执行此操作。(在我的示例中,您可以忽

我已经按照下一个指南与詹金斯一起下载了docker图像

当我使用
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

根据您的需要,您可以选择一个。 例如,我在测试jenkins插件时使用后者,它将数据保留在插件中。 后者的来源对更新也很有用:

好的,我知道了。但是我没有使用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