我使用 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 保持容器事件并链接