What are differences between Docker and Octopus Deploy What are differences between Docker and Octopus Deploy docker docker

What are differences between Docker and Octopus Deploy


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.