我刚刚开始我的docker之旅,并试图将如何将docker部署到云中的生产实例的映像放在一起。目前,我们所有的应用程序部署都使用ansible。但是,当我查找有关部署docker容器的信息时,我看到的要么是对swarm和kubernetes的引用,要么是通过ssh进行的手动部署。
所以,我的新手问题是,如何将docker部署到云中的主机上?有使用ansible的理由吗?(他们有一个插件。)看起来也许swarm或者kubernetes可以帮我们解决这个问题。
发布于 2017-11-03 11:49:21
4年前,我在一个基于容器的平台上工作,当时,我们使用Ansible部署容器,因为编排框架还不存在。
现在,我建议使用编排框架(Kubernetes、Docker Swarm、Openshift等)。提供入口负载均衡、生命周期管理、持久卷管理等功能。
有很多方法可以在公共云中运行容器,一些实现了像Kubernetes这样的编排框架,一些实现了自己的框架: azure acs/aks,AWS ECS,Google Container Engine等。Docker机器也可以在公共云中提供docker群。有趣的是,底层VM要么是隐藏的,要么是为您管理的。
有很多方法可以做到这一点,但仅使用Ansible将仅限于在现有VM上启动容器,您必须提供和管理这些容器。
发布于 2017-11-03 12:56:12
我相信这个问题的答案取决于你的应用程序的部署需求。
情况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中添加对这些配置的支持。
https://stackoverflow.com/questions/47087871
复制相似问题