I have been using Octopus Deploy for sometime now just to deploy a web application onto an AWS EC2 instance. I am aware that Octopus Deploy is .NET specific and the learning curve is quite easy when compared to Docker. I understand one of the point of using Docker is to create containers rather than running using hypervisers to create VMs.
But my question is what are the real reasons to use Docker over octopus deploy ? which is better for deploying applications. Do they do different things ?
Octopus Deploy is an automated deployment and release management server. It is designed to simplify deployment of ASP.NET applications Windows Services and databases.
VMs have the host OS and guest OS inside each VM. A guest OS can be any OS, like Linux or Windows, irrespective of the host OS. In contrast, Docker containers host on a single physical server with a host OS, which shares among them. Sharing the host OS between containers makes them light and increases the boot time.
The difference between Docker Swarm and Docker Compose is that Compose is used for configuring multiple containers in the same host. Docker Swarm is different in that it is a container orchestration tool. This means that Docker Swarm lets you connect containers to multiple hosts similar to Kubernetes.
A release in Octopus, is a snapshot of the packaged software, variables, and the deployment process. A release is deployed to the environments defined in the deployment process. Typically, releases are deployed to one environment and then promoted to the next environment when they are successful.
It's ok to have multiple processes, but to get the most benefit out of Docker, avoid one container being responsible for multiple aspects of your overall application. You can connect multiple containers using user-defined networks and shared volumes.
Paul Stovell - Founder & CEO - Octopus Deploy | LinkedIn.
Good question. They do different things and work in different ways, but there is some overlap in the problems they address. Octopus is about shipping a built application - Docker is about building an application into a self-contained package, which you can ship and run as a container.
Disclaimer: I'm a Docker Captain (Docker's community recognition program) and I've been investing a lot of time in Docker. I'm biased towards it because I think it's fantastic tech - Octopus us great too, but the scope is smaller. If you want a broader overview of Docker, I talked about it recently on Channel 9.
With Octopus you can take a compiled ASP.NET web app and deploy it to your servers. Using the Octopus Library you can use templates to set up your app platform as part of the deployment, configuring IIS, running Windows Services etc. But your servers need the pre-requisites already set up (.NET, IIS etc.), they need the Octopus agent installed to be able to run the deployments, and you need the Octopus server to co-ordinate it.
With Docker you can take a compiled ASP.NET web app and build it into an image - which is a single logical unit that contains your whole application stack. The image has IIS and ASP.NET, your app, your app's dependencies and all its configuration in a single unit. You can push and pull the image to a Docker registry (a shared image store), and run your app on any Windows machine with Docker installed. Your host doesn't need IIS or ASP.NET installed - it's all inside the image, and you don't need additional infrastructure, Docker just runs as a Windows Service on the host.
Docker runs your apps, as well as building and shipping them. Applications run in containers which are lightweight, isolated sandboxes on the host. You can have containers running apps with different versions of .NET, different versions of IIS, even different versions of Windows - all running on the same host without affecting each other.
You can split an application into many containers, they can all access each other in a virtual network, and you can capture complex distributed solutions using Docker Compose to define the parts and their relationship. You can cluster multiple hosts together into a Docker Swarm which gives you easy scaling, failover and rolling upgrades. And you can use the commercial Docker Datacenter product to manage all your images, hosts and containers, and secure access to it all.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With