Docker和Octopus Deploy之间有什么区别

时间:2016-10-05 09:00:31

标签: .net docker web-deployment octopus-deploy docker-container

我一直在使用Octopus Deploy,只是为了将Web应用程序部署到AWS EC2实例上。我知道Octopus Deploy是特定于.NET的,与Docker相比,学习曲线非常简单。我理解使用Docker的一个方面是创建容器而不是使用虚拟机管理程序来创建VM。

但我的问题是使用Docker而不是章鱼部署的真正原因是什么?这对于部署应用程序更好。他们做不同的事吗?

1 个答案:

答案 0 :(得分:19)

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

免责声明我是Docker队长(Docker's community recognition program)而且我在Docker投入了大量时间。我之所以偏向它,是因为我认为它是非常棒的技术 - 八达通我们也很棒,但范围更小。如果您想更广泛地了解Docker,I talked about it recently on Channel 9

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

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

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

您可以将应用程序拆分为多个容器,它们都可以在虚拟网络中相互访问,您可以使用Docker Compose捕获复杂的分布式解决方案来定义部件及其关系。您可以将多个主机一起集群到Docker Swarm中,从而轻松实现扩展,故障转移和滚动升级。您可以使用商业Docker Datacenter产品来管理所有图像,主机和容器,并保护对它的访问。