CI / CD中的Docker镜像是否仅对多主机有用?

时间:2017-02-13 11:40:08

标签: docker continuous-integration continuous-deployment

我们是两个人在Docker中开发一个主机应用程序,我们希望减少一些测试时间并使用CI / CD。

许多文章都是关于使用付费服务来运行测试和构建Docker镜像,然后部署图像。

在多主机环境中,我可以看到部署映像的优势,但单个主机呢?

在单个主机案例中部署映像只是一层额外的复杂性吗?

更新

我们现在正在做的是将更改推送到Git,然后手动测试应用程序,如果没问题,则合并为master并登录到生产服务器并执行git pull && docker-compose build

当我谈到在问题中部署Docker镜像时,在生产上部署几乎就是docker pull。关键区别在于docker镜像不是在生产服务器上构建的,而是在其他地方构建的。

这是我要问的。当它仅部署在单个主机/机器/服务器/节点上时,在其他地方构建映像是否有任何优势?

1 个答案:

答案 0 :(得分:1)

我回答了已经更新过的问题:

在其他地方构建图像是否有任何优势< ...>?

是的,有一些。

  1. 不必在生产服务器上保留构建工具更新;事实上,你根本不需要它们。这减少了dev / QA / prod环境之间可能的版本不匹配的可能性,减少了在服务器上发现的一些0天漏洞的可能性等。一般来说,生产服务器上的额外软件越少越好。
  2. 使用已经构建的容器,您可以立即使用许多选项:
    • 动态可扩展性。一旦发现您拥有大量用户,您所要做的就是提升新VM并将容器拉到那里。或者甚至在同一主机上启动另一个容器并平衡它们。
    • 修补程序部署。在重负载下可能出现一些错误。当您尝试同时为大量用户构建新的bugfix容器时,生产服务器可能只是资源不足。
    • 灾难恢复。如果您的生产主机突然死亡,您所要做的就是在其他任何地方运行docker容器。在这种情况下,您可能会遇到未经优化的环境,但至少您不必向用户写关于N小时停机时间的解释电子邮件。
  3. 我可以跟上,但总结一下:这一切都取决于你拥有多少用户,你计划如何随着时间的推移而增长,你拥有多少资源以及需要多少资源来构建,你有多宽容&#当然,您可以在prod服务器上构建容器并将其上传到docker repo并幸福地生活,以防这是一个小的非关键内部门户。但是,如果您是某种社交网络创业公司,那么您最好开始分离环境并制定各种可扩展性和恢复计划。并且在单独的服务器上构建应用程序是此类计划的一个很好的部分。