当重新启动容器时,docker中的Jenkins会丢失配置

时间:2016-05-09 12:49:40

标签: jenkins docker

我已按照下一个指南https://hub.docker.com/r/iliyan/jenkins-ci-php/下载了与Jenkins一起使用的Docker镜像。

当我使用docker start CONTAINERNAME命令启动容器时,我可以从localhost:8080访问Jenkins。

当我更改Jenkins配置并使用docker stop CONTAINERNAMEdocker start CONTAINERNAME重新启动Jenkins时出现问题,我的Jenkins不包含我之前的任何配置更改。

如何坚持Jenkins配置?

4 个答案:

答案 0 :(得分:5)

您需要将Jenkins配置作为卷安装,-v标志将为您执行此操作。 (您可以忽略我示例中的--privileged标志,除非您计划在jenkins docker图像中构建docker图像)

docker run --privileged --name='jenkins' -d -p 6999:8080 -p 50000:50000 -v /home/jan/jenkins:/var/jenkins_home jenkins:latest

-v标记会将您的/var/jenkins_home装在容器外/home/jan/jenkins,并在重建之间维护。

--name以便您有一个固定的容器名称来启动/停止它。

然后,下次要运行它时,只需调用

即可
docker start jenkins

答案 1 :(得分:0)

我的理解是,初始化脚本

/sbin/tini -- /usr/local/bin/jenkins.sh

在启动时重置通过以下工具提供的文件夹中的jenkins配置 JENKINS_HOME env var, 是否已安装在docker vm外部。

但是可以使用以下方式将配置存储在github上  配置/“配置系统” /“ SCM同步配置” / Git 部分。

查看可能的详细配置here

答案 2 :(得分:0)

您可以使用此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_host:/var/jenkins_home

答案 3 :(得分:0)

除了显而易见的,比如运行参数来清除您应该禁用的图像之外,您还可以做一些事情:

  • 使用 docker commit 并重用已提交的容器

  • 使用 docker 卷将写入的部分挂载到本地文件系统

  • 我最喜欢的:使用命令:

    docker 容器重启容器名

根据您的需要,您可以选择一个。 例如,我在测试 jenkins 插件时使用后者,它将数据保留在里面。 后者的来源也对更新有用: https://jimkang.medium.com/how-to-start-a-new-jenkins-container-and-update-jenkins-with-docker-cf628aa495e9