我正在开发一个[遗留]项目,该项目的构建管道生成转速s 被拾取三角帆到烤一个急性心肌梗死它将依次在 AWS EC2 机器上运行。
我建议使用 Docker 而不是 RPM+AMI,但我的团队拒绝在“生产中”使用 Docker。原因之一是Docker是一个虚拟环境,在EC2上运行它没有意义,EC2本身就是一个虚拟化环境。
我搜索了反对在生产中使用 Docker 的论据,但我仍然不清楚这种方法的优缺点。我是说亚马逊ECS支持 Docker,但这看起来更像是流行语“兼容性”。任何人都可以分享一些关于为什么(或为什么不)人们可以使用 Docker(或其他容器技术,例如逆向知识转移)而不是 RPM+AMI?
2016 年 12 月更新:深入研究后,我意识到我的团队主要关心的是docker-compose
与更高级的编排工具(例如库伯内斯。 Kubernetes 可以使用 Docker(以及其他容器技术),这意味着如果所需的编排技术到位,在生产中运行 Docker 不会出现问题。
答案1
Docker 在主机(您的 AWS 实例)和生成 RPM 的运行进程之间提供隔离。我不知道为什么你不能使用 Docker 作为另一层安全和自动化,因为如果你需要迁移到另一台服务器甚至云提供商,它会容易得多。
此外,您还可以创建多个运行不同操作系统发行版和版本的 Docker 映像,以在完全自动化的工作流程中测试新创建的 RPM 包的安装。
现在关于“在生产中使用 Docker”,我无法列出一年前以来在生产中使用的所有公司和大型项目。它很稳定,拥有很棒的文档,一个庞大且快速发展的社区,而其背后的公司(Docker Inc)是目前最具创新性并受到软件开发关注的公司之一。更不用说 Docker 的技术堆栈基于可靠的 Linux 组件,例如内核本身和libcontainer
.
作为一个起始计划,我建议您将环境的一小部分迁移到 Docker 并用作测试设置。这也让您有更多的理由发现可能遇到的最终问题。
我发现的很棒的参考资料:[1]https://clusterhq.com/assets/pdfs/state-of-container-usage-june-2015.pdf