我可以将包含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如下:
- 提交当前正在运行的容器
- 使用以下命令复制容器内部的作业configuration:
docker cp /var/jenkins_home/jobs ./jobs
。 这会将正在运行的容器中的作业configuration复制到您的机器中。 请记住清理生成文件夹 - 创build一个从提交的图像inheritance的Dockerfile并复制jenkins_home下的作业configuration。
- 推送图像,你应该有一个你可以拉的图像,将所有的作业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:持续存在的数据”,使用数据容器, 然后可以导出/导入 。