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

我在本地计算机的泊坞窗容器中有一个Jenkins安装程序。 我可以将其移动到公司的CI服务器并重新使用工作项目吗?

我在本地电脑上试过

docker commit docker push 

在CI服务器上

 docker pull docker run 

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

如何使用Docker获取所有configuration和作业项目?

如提交命令的文档中所述

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

jenkins家被安装成一个容器,因此当你提交容器的时候jenkins home将不会被提交。 因此,当前正在运行的本地容器上的所有作业configuration将不会是提交的图像的一部分。

您的问题将减less到您将如何将您机器上的jenkins_home卷迁移到另一台机器。 这个问题已经解决,你可以在这里find解决scheme。

然而,我会build议一个更好,更具扩展性的方法,特别是jenkins。 第一种方法存在的问题是,无论何时您想要在新机器上启动类似的jenkins实例,都需要进行一些手动干预。

解决scheme如下:

  1. 提交当前正在运行的容器
  2. 使用以下命令复制容器内部的作业configuration: docker cp /var/jenkins_home/jobs ./jobs 。 这会将正在运行的容器中的作业configuration复制到您的机器中。 请记住清理生成文件夹
  3. 创build一个从提交的图像inheritance的Dockerfile并复制jenkins_home下的作业configuration。
  4. 推送图像,你应该有一个你可以拉的图像,将所有的作业configuration正确

dockerfile将如下所示:

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

您需要检查Jenkins映像( hub.docker.com/r/jenkins/jenkins/ )是如何在本地计算机上启动的:如果它正在挂载本地卷,那么该卷应包含JENKINS_HOME以及所有作业configuration和插件。

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

您还需要导出该卷,而不仅仅是图像。
请参阅“ Docker&Jenkins:持续存在的数据”,使用数据容器, 然后可以导出/导入 。