docker工作stream程devise与生产Jenkins

我正在学习自己的Docker几个星期,我认为是时候进行生产项目(数字海洋)了。 我看到了一些工作stream程devise的问题。 我想为我的源代码使用GitHub。 jenkins持续整合。 Maven用于从Dockerfile构buildWAR和Image。

这是我的devise。

docker工作stream程devise与生产Jenkins

但我不感到高兴:(因为我看到下一个问题,我不能解决它。

  1. 我的devise中没有看到Docker Hub。 docker应用程序可以运行而无需推入docker集线器? 如果没有,我可以添加到Docker Hub?
  2. jenkins正在生产服务器上运行。 我想jenkins正在消耗CPU和RAM的资源。 我不喜欢这个。 这是很好的做法?
  3. jenkins在一个docker集装箱上运行,这值得吗? 如果没有。 为什么Jenkins有一个docker图像?

请给出一些build议,如果我的devise不能在生产工作。

提前致谢。

  1. 您需要一个dockerregistry,这是build立的docker图像存储的地方。 如果你想要私人图像,你可以自己托pipe一个或者支付Docker Hub。 请参阅https://hub.docker.com/billing-plans/

  2. jenkins不应该在生产中运行,你的代码应该是。 jenkins是一个CI工具,可以帮助你build立你的代码。 所以它需要在一个单独的“生成”机器上。 jenkins应该build立你的代码,创builddocker图像,并将其存储在回购。 取决于您的政策如何决定如何以及何时将其投入生产。

  3. 正如@Carlos提到,如果你想build立docker的图像,最好运行Jenkins作为本机应用程序。 为什么jenkins提供一个docker形象? 因为它更容易尝试,而不是每个人都需要从其构build的工件中创builddocker图像。

你的回答:

  1. 你需要一些东西来存储你的图片。 以后将从生产服务器中取出。 你需要一个dockerregistry。 Docker Hub只是一个具有许多function的dockerregistry。 但是,您可以安装私人dockerregistry。 有一个官方的容器。

  2. 不,这不是一个好的做法。 让jenkins独自留在服务器上,正是因为你暴露的原因,资源和干扰你的应用程序,比如开放端口。

  3. 不要在容器中使用jenkins,因为在Docker中调用docker是非常困难的(不是不可能,但是很困难)。 除了docker之外,集装箱是非常好的。 你可以通过安装jenkins来apt install jenkins。

问候

我在这里描述了一个更精细的Vagrant / Dockerpipe道: 使用Ansible,Jenkins和docker构build快速的testing环境

包起来:

专业的Dockerpipe道应该包括以下步骤:

  1. 基础图像构build:从Dockerfile构build图像,每当Dockerfile发生更改时触发此构build。 结果可以上传到公共Dockerhub映像。 例如Java JDK8 Base Image:yourname / baseimageJRe8
  2. 基本映像configuration:构buildconfiguration的映像。 包括你的java-maven-build工件和configuration文件。 只用于这一步稳定标记的Docker镜像:yourname / baseImageJRe8:2.0-stable。 结果必须上传到PRIVATE Dockerregistry中,例如privateregistry.io/yourname/softwareStackMySoftware:2016-10-21-Build-210。
  3. 预置映像部署:从主机上的私有registry中提取映像。 请记住,只能使用稳定的标记图像。 通过环境variables添加主机特定configuration,或在Docker卷内添加configuration文件。 最后启动Docker容器。

专业的jenkins设置应该包括:

  1. 一个jenkins大师:工作configuration。 绝对没有生成处理器!
  2. jenkins奴隶的任意数量:build立docker图象。 是的,这个自然会使用大量的资源。

正如你可能已经听说,在Docker内运行Docker没有任何理智的方法。 因此,您需要Docker-Machine(由cli docker-machine设置)或其他安装了Docker的虚拟机来构buildDocker镜像。

此外,在持续集成环境中构build泊坞窗图像会产生大量停止和失败的构build容器和(悬挂)图像。 您应该在安全的环境中执行此操作,以便在不影响生产部件的情况下安全地清洁机器。

但是,Jenkins或者Docker内部的Jenkins奴隶无法构buildDocker镜像,这是一个很大的误解。 您只需将Docker Cli安装在Docker镜像中,然后将命令发送到您的主机。 例如,检查这Jenkins swarm从属图像blacklabelops / swarm-dockerhost