12

一段时间以来,我一直在使用 Octopus Deploy,只是为了将 Web 应用程序部署到 AWS EC2 实例上。我知道 Octopus Deploy 是特定于 .NET 的,与 Docker 相比,学习曲线非常容易。我知道使用 Docker 的目的之一是创建容器,而不是使用管理程序运行来创建虚拟机。

但我的问题是使用 Docker 而不是 octopus deploy 的真正原因是什么?这更适合部署应用程序。他们做不同的事情吗?

4

1 回答 1

22

好问题。他们做不同的事情并以不同的方式工作,但他们解决的问题有一些重叠。Octopus 是关于交付构建的应用程序 - Docker 是关于将应用程序构建到一个独立的包中,您可以将其作为容器交付和运行。

免责声明我是一名 Docker Captain(Docker 的社区认可计划),我在 Docker 上投入了大量时间。我偏向于它,因为我认为它是一项了不起的技术 - Octopus 我们也很棒,但范围更小。如果你想更广泛地了解 Docker,我最近在 Channel 9 上谈到了它

使用 Octopus,您可以获取已编译的 ASP.NET Web 应用程序并将其部署到您的服务器。使用Octopus 库,您可以使用模板来设置您的应用平台,作为部署、配置 IIS、运行 Windows 服务等的一部分。但是您的服务器需要已经设置的先决条件(.NET、IIS 等),他们需要安装八达通代理以便能够运行部署,您需要八达通服务器来协调它。

使用 Docker,您可以获取已编译的 ASP.NET Web 应用程序并将其构建到映像中 - 这是包含整个应用程序堆栈的单个逻辑单元。该图像在一个单元中包含 IIS 和 ASP.NET、您的应用程序、应用程序的依赖项及其所有配置。您可以将映像推送和拉取到 Docker 注册表(共享映像存储),并在任何安装了 Docker 的 Windows 机器上运行您的应用程序。您的主机不需要安装 IIS 或 ASP.NET - 它们都在映像中,并且您不需要额外的基础设施,Docker 只是在主机上作为 Windows 服务运行。

Docker 运行您的应用程序,以及构建和交付它们。应用程序在容器中运行,这些容器是主机上的轻量级隔离沙箱。您可以让容器运行具有不同版本的 .NET、不同版本的 IIS 甚至不同版本的 Windows 的应用程序——所有这些都在同一主机上运行而不会相互影响。

您可以将应用程序拆分为多个容器,它们都可以在虚拟网络中相互访问,您可以使用Docker Compose捕获复杂的分布式解决方案来定义各个部分及其关系。您可以将多台主机聚集到一个Docker Swarm中,从而轻松扩展、故障转移和滚动升级。您可以使用商业Docker 数据中心产品来管理您的所有镜像、主机和容器,并安全地访问它们。

于 2016-10-05T09:30:08.737 回答