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

标签 docker jenkins migration

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

我在本地电脑上试过了

docker commit
docker push

在 CI 服务器上

docker pull
docker run 

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

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

最佳答案

commit command 的文档中所述

The commit operation will not include any data contained in volumes mounted inside the container.

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

您的问题归结为如何将您机器上的 jenkins_home 卷迁移到另一台机器。此问题已解决,您可以找到解决方案here .

不过,我会建议一种更好、更具可扩展性的方法,特别是针对 jenkins。第一种方法的问题在于,每当您想在新机器上启动类似的 jenkins 实例时,都需要进行一些手动干预。

解决方法如下:

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

dockerfile 看起来像这样:

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

关于docker - 我可以将包含 Jenkins 设置的 docker 容器移动到其他服务器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46860485/

相关文章:

git - hudson/jenkins 一直在 git 中构建坏分支而不是好分支

ios - jenkins 集成 xcode - shell 命令

mysql - Oracle user_indexes 转换为 MySQL

docker - 如何在 Docker 容器中使/etc/hosts 可由 root 写入?

使用 sudo 时无法识别 docker compose

docker - 将卷安装到包含同名文件的位置会覆盖这些文件还是会被使用?

docker - 在 docker 容器中使用 apache 服务器配置 SSL

jenkins - 第一次安装Jenkins,不知道默认用户名

php - fatal error : Call to a member function run() on null in {path to the test file}

jsp - Tomcat 7 - 在 web.xml 的 <servlet> 中使用 <jsp-file>