Docker部署的最佳实践

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

所以,我的问题是,如何将Docker部署到云中的主机? 有没有什么理由使用ansible? (他们有一个插件。)似乎群或kubernetes可能只是为我们照顾。

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

现在,我build议使用一个编排框架(Kubernetes,Docker Swarm,Openshift等),它提供入口负载平衡,生命周期pipe理,持续卷pipe理等function。

在公有云中运行容器有很多种方法,一些实现了Kubernetes等业务stream程框架,一些实现了自己的框架:azure acs / aks,AWS ECS,Google Container Engine等。Docker机器也可以在公有云中提供Docker群集。 有趣的是,底层虚拟机要么是隐藏的,要么是为你pipe理的。

有很多种方法可以实现,但是仅仅使用Ansible将仅限于在现有的虚拟机上旋转容器,而这些容器必须configuration和pipe理。

我相信这个问题的答案取决于你的应用程序的部署要求。

案例1)您的应用程序的部署非常简单,只需部署泊坞窗容器即可。

解决scheme1)在这种情况下,您确实不需要configurationpipe理工具来pipe理您的部署,我相信您可以像这里所build议的那样设置Jenkins作业。

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

解决scheme2)您应该使用ansible / chef来设置您的主机环境,并使用它部署docker集装箱。 现在在这里,docker容器的部署可以像普通的docker run一样,或者你可以使用推荐的docker swarm方式,如果你有超过1个应用程序部署,你希望你的docker主机实例有效地使用内存或CPU。 更不用说使用swarm还有其他许多好处,您可以检查它们是否适用于您。

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

解决scheme3)当涉及到内核configuration选项时,Docker swarm有一些限制。 你可以参加这里的讨论。 在这种情况下,你可能不得不采用经典的docker部署方式,即docker run直到在docker swarm中为这些configuration添加了支持。