我计划在最后用Docker建立一个基于jenkins的CD工作流程.
我的想法是为每个绿色构建自动构建(由Jenkins)一个docker镜像,然后通过jenkins或’hand’部署该图像(我还不确定是否要自动运行每个绿色构建).
达到建立新图像的目的很容易.我的问题是关于部署本身. “重新加载”或“重启”正在运行的docker容器的最佳做法是什么?假设为容器更改了映像,如何在内部运行服务时优雅地重新加载它?我是否需要使用多个运行容器和负载平衡进行传统舞蹈,或者是否有“停靠”方式?
最佳答案
Suppose the image changed for the container,how do I gracefully reload it while having a service running inside?
你不想要这个.
Docker是一个用于管理应用程序及其依赖项的简单系统.它简单而强大,因为应用程序的所有依赖项都与它捆绑在一起.如果您的应用程序今天在您的笔记本电脑上运行,它将在您的服务器上运行.这是因为我们已经为您的应用程序捕获了100%的“输入”.
一旦引入“升级”和“重启”等概念,您的应用程序就可以(意外地)在内部存储状态.这意味着明天的行为可能与今天不同(在重新启动和升级100次之后).
最好使用负载平衡器(或类似的)在您的版本之间进行转换,而不是尝试使用Docker的理念.