让Jenkins在更新图像时“更新”正在运行的Docker容器的最佳方法

我们的组织对于Docker和Jenkins来说是比较新的。 我们正在开发从(Java)源代码更新到运行应用程序的CIpipe道。

目前Jenkins正在使用Cloudbees Docker Build and Publish插件在成功构build之后更新映像。 它只是拉取基础(JBoss)的图像,并使用刚刚构build的应用程序的WAR文件(通过Maven)更新它。

我们正在使用“通过SSH发送命令”构build步骤,以SSH方式进入服务器(当前正在运行的)容器处于打开状态,停止具有指定图像ID的容器,然后重新拉动并随后运行该容器。

但是,我知道必须有一个更好,更优雅的方式来做到这一点。 令人惊讶的是,我很难find如何做文档。 任何意见,将不胜感激。 请告诉我。

如果你只想使用Docker,那么你可以做的事情不多。 使用Jenkins和Docker已经是很好的一步了。 也许你可以docker stop而不是ssh shutdown但这不会让事情变得更好。

有像Opensift和Fabric8这样的工具可以帮助您构buildCI和CD工作stream程。 这应该有所帮助。 但是,请注意,如果您仔细观察它们,您会发现其中有几个build在Kubernetes之上 。

如果您正在寻找可以使用的工作stream程,请尝试使用Openshift。 看看它的架构概述 。 它有一个让你的生活更轻松的Jenkins 插件 。

如果你想在build立自己的工作stream程的同时向前迈进一步,毫无疑问,Kubernetes是一条可行的路。 它只是把吨的设施,以build立你的集装箱集群,而不要强加给你一些工作stream程。 看看这个概述 , 从CoreOS文档开始吧 。