Docker部署最佳实践

时间:2017-11-03 03:07:16

标签: docker deployment kubernetes docker-swarm

我刚刚开始我的docker之旅,并试图将如何将docker部署到云中的生产实例的图像。我们目前在所有应用程序部署中使用ansible。但是,当我查找有关部署docker容器的信息时,我看到了对swarm和kubernetes的引用,或者看起来是通过ssh手动部署的内容。

所以,我的noob问题是,你如何在云中将docker部署到你的主机?有没有理由使用ansible? (他们有一个插件。)看起来好像swarm或kubernetes可能会为我们照顾它。

2 个答案:

答案 0 :(得分:1)

4年前我在一个基于容器的平台上工作,当时我们使用Ansible来部署容器,因为编排框架不存在。

如今,我建议使用业务流程框架(Kubernetes,Docker Swarm,Openshift等),它提供入口负载平衡,生命周期管理,持久性卷管理等功能。

有许多方法可以在公共云中运行容器,有些方法实现了像Kubernetes这样的编排框架,有些实现了自己的框架:azure acs / aks,AWS ECS,Google Container Engine等.Docker机器可以在公共云中提供docker swarms同样。这些有趣的是底层虚拟机要么是隐藏的,要么是为你管理的。

有许多方法可以做到这一点,但只使用Ansible将限制在您必须配置和管理的现有VM上启动容器。

答案 1 :(得分:0)

我认为这个问题的答案取决于您的应用程序的部署要求。

案例1)您的应用程序部署非常简单,您只需要部署docker容器。

解决方案1)在这种情况下,您真的不需要配置管理工具来管理部署我相信,您几乎可以按照建议here设置Jenkins作业。

案例2)您的应用程序的部署也需要在docker主机实例中完成一些配置,也许您需要设置一些监控代理,设置一些logrotate等。

解决方案2)您应该使用ansible / chef来设置主机环境,并使用它来部署docker容器。现在这里的docker容器部署可能与普通docker run类似,或者您可以使用推荐的docker swarm方式,如果您要部署多个应用程序,并且希望Docker主机实例有效地使用内存或CPU。更不用说使用swarm有许多其他好处,你可以检查它们是否适用于你。

案例3)您的应用程序部署需要您修改一些内核级参数,可能需要对ulimit参数进行一些修改等。

解决方案3)Docker swarm在内核配置选项方面有一些限制。您可以参加讨论here。在这种情况下,您可能必须使用经典的docker部署方式,即docker run,直到为docker swarm中的这些配置添加支持。