Docker和Octopus Deploy有什么不同?

我一直在使用Octopus Deploy来将Web应用程序部署到AWS EC2实例上。 我知道Octopus Deploy是与.NET相关的,与Docker相比,学习曲线相当简单。 我明白使用Docker的一个要点是创build容器,而不是使用hypervisers来创build虚拟机。

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

好问题。 他们做不同的事情,以不同的方式工作,但是他们解决的问题有一些重叠。 八达通是关于运送一个已build成的应用程序 – Docker是关于build立一个应用程序到一个自包含的软件包,你可以作为一个容器运输和运行。

免责声明我是Docker船长( Docker的社区认可计划 ),我一直在Docker投入大量时间。 我偏向它,因为我认为这是非常棒的技术 – 八达通我们也很棒,但范围较小。 如果您想更全面地了解Docker, 我最近在第9频道上讨论了它 。

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

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

Docker运行您的应用程序,以及构build和运输它们。 应用程序在主机上的轻量级孤立沙箱中运行。 您可以使用不同版本的.NET,不同版本的IIS,甚至是不同版本的Windows,运行应用程序的容器都运行在相同的主机上,而不会相互影响。

您可以将应用程序拆分为多个容器,它们都可以在虚拟networking中彼此访问,也可以使用Docker Compose捕获复杂的分布式解决scheme,以定义部件及其关系。 您可以将多个主机集中到一个Docker Swarm中 ,这样可以轻松扩展,故障切换和滚动升级。 而且您可以使用商用Docker Datacenter产品来pipe理所有图像,主机和容器,并确保对其进行访问。