我可以将包含Jenkins设置的docker容器移动到其他服务器吗?

时间:2017-10-21 05:54:16

标签: docker jenkins migration

我在本地计算机的docker容器中安装了Jenkins。 我可以将其移至公司的CI服务器并重新使用工作项吗?

我在本地计算机上试过这个

React

在CI服务器上

docker commit
docker push

但是,当我在CI服务器上运行Jenkins时,Jenkins已初始化。

如何使用Docker获取所有配置和作业项?

2 个答案:

答案 0 :(得分:1)

您需要检查Jenkins映像(hub.docker.com/r/jenkins/jenkins/)在本地计算机上的启动方式:如果它正在挂载本地卷,则该卷应包含JENKINS_HOME所有作业配置和插件

docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

您也需要导出该卷,而不仅仅是图像 请参阅" Docker & Jenkins: Data that Persists ",使用you can then export/import的数据卷容器。

答案 1 :(得分:1)

commit command

的文档中所述
  

提交操作不包含卷中包含的任何数据   安装在容器内。

jenkins home作为卷安装,因此当您提交容器时,jenkins home将不会被提交。因此,当前在运行的本地容器上的所有作业配置都不会是提交映像的一部分。

您的问题减少了如何将计算机上的jenkins_home卷迁移到另一台计算机。此问题已解决,您可以找到解决方案here

我建议采用更好,更具伸缩性的方法,特别是对于詹金斯。第一种方法的问题在于,只要您想在新机器上启动类似的jenkins实例,就需要进行一些安静的手动干预。

解决方案如下:

  1. 提交当前正在运行的容器
  2. 使用以下命令复制容器内的作业配置:docker cp /var/jenkins_home/jobs ./jobs。这会将作业配置从正在运行的容器复制到您的计算机中。请记住清理构建文件夹
  3. 创建一个继承自提交图像的Dockerfile,并在jenkins_home下复制作业配置。
  4. 推送图像,您应该有一个可以拉出的图像,并且可以正确配置所有作业
  5. dockerfile看起来像:

    FROM <commited-container>
    COPY jobs/* /var/jenkins_home/jobs/