.net - Docker 和 Octopus Deploy 有什么区别

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

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

最佳答案

好问题。他们做不同的事情并以不同的方式工作,但他们解决的问题有一些重叠。 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产品来管理您的所有图像、主机和容器,并安全地访问它们。

https://stackoverflow.com/questions/39869607/

相关文章:

dns - 如何让 docker 容器与 sshuttle 一起工作?

docker - 如何使用 Jenkins 管道在 docker 容器中安装 Jenkins 工作区

docker - 证书是如何从 super 账本中 hfc-key-store 中真实的 fabri

docker - 如何基于现有镜像创建新的 docker 镜像?

docker - 如何将端口从一个 docker 容器转发到另一个?

amazon-web-services - 将 AWS EFS 与 Docker 结合使用

php - 使用 docker-compose 保持容器事件并链接

docker - Jenkins错误的卷权限

spring - Docker Compose + Spring Boot + Postgres 连

windows - Docker 推送到 AWS ECR 在 Windows : no basic