【问题标题】:What are differences between Docker and Octopus DeployDocker 和 Octopus Deploy 有什么区别
【发布时间】:2017-02-13 15:23:24
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    免责声明我是一名 Docker 队长 (Docker's community recognition program),我在 Docker 上投入了大量时间。我偏向于它,因为我认为它是一项了不起的技术 - Octopus 我们也很棒,但范围更小。如果你想更广泛地了解 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 产品来管理您的所有图像、主机和容器,并安全地访问它们。

    【讨论】:

    • 哇,谢谢你解释得很好的答案!.. 我想我现在是一名 docker 爱好者,因为我读到了这个。所以基本上重申一下,我不需要在服务器上手动安装我的所有项目依赖项,例如 IIS、ASP.Net 等,而是将这些依赖项放在一个图像上,然后可以将该图像推送到注册表,然后我可以在任何服务器上使用此图像...我想这样做的好处是我不必在新服务器上再次安装完整的依赖项,我想将我的应用程序推送到新服务器上。
    • 是的。使用 Docker,您的基础设施要求是(机器 + 网络 + Docker)。您可以将 Docker Hub 用于您的映像,这是一个公共注册表,也可以在本地运行您自己的注册表。
    • 好吧,我的问题是,对于 CI 之类的问题,提交后在 Teamcity 中运行我的构建和单元测试,这是否意味着,我必须与构建应用程序分开执行此操作再次进入 docker 容器并部署容器?对我来说,通常的过程是编写代码、提交、在 teamcity 中构建、在 teamcity 中运行测试、使用 octopack 创建包、使用 octopus deploy 部署包...在将应用程序放入容器中进行运输之前,是否已完成所有这些步骤?
    • 正确,您仍然像以前一样在 TeamCity 中进行预打包。
    • 感谢这个(旧的)解释。本周参加了哥本哈根的 DockerCon,看到了你的演讲,并花了很多时间在“使用 Docker”的轨道上。我们还大量使用 Octopus,并将我们的部署简化到这里。但是我从来没有和你谈论过 Docker 是否可以完全取代像 Octopus 这样的东西。从长远来看,这听起来是最有价值的方法。
    猜你喜欢
    • 2016-10-24
    • 1970-01-01
    • 2021-05-24
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    相关资源
    最近更新 更多