将 Docker 推向生产环境

将 Docker 推向生产环境

我在开发环境中使用 docker-compose,其中有一个docker-compose.yml文件列出了我需要的所有容器。

另外,我还有一个集中的 git repo、Jenkins 服务器和另一台服务器,我将在其中保存暂存和生产数据。

所以问题是如何更好地组织部署过程。

现在git push在 git 服务器端触发 Jenkins 构建作业。根据分支名称(暂存或生产),将触发不同的作业。

构建作业使用 docker-compose 来启动整个环境并运行测试。那么如何将新容器推送到暂存/生产环境?

一种方法是将它们推送到私有或公共 docker 注册表,但在生产中更新容器的最佳实践是什么? Jenkins 服务器是否应该只 ssh 并运行 raw 、 和kill命令rm?我没有看到相关示例。pullrun

答案1

Kubernetes、Docker Swarm 或 Rancher 可能是实现所谓滚动更新的最佳方式。

基本上,滚动更新将获取一组容器(称为服务)并逐一更新它们。假设您有三个容器运行您的应用程序,滚动更新将关闭第一个容器并更新它,依此类推,直到服务完全更新。这意味着您实际上可以获得应用程序的零停机时间,因为这些产品中的负载平衡器是智能的,不会重定向到更新容器。

此链接为您提供了 Swarm 运行服务然后更新它的基本实现。

Swarm 滚动更新

对于一些最简单的设置和实施,根据我的经验,Rancher 是掌握所有这些概念的良好起点。它基本上是 Kubernetes 等不同 Docker 技术之上的接口。

Rancher 网站

相关内容