Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are differences between Docker and Octopus Deploy

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 ?

like image 819
eagercoder Avatar asked Oct 05 '16 09:10

eagercoder


People also ask

What is octopus deploy used for?

Octopus Deploy is an automated deployment and release management server. It is designed to simplify deployment of ASP.NET applications Windows Services and databases.

Is Docker the same as virtual environment?

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.

What is the difference between Docker and Docker Swarm?

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.

How does Octopus deployment work?

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.

Can we Deploy multiple applications in one container?

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.

Who owns Octopus deploy?

Paul Stovell - Founder & CEO - Octopus Deploy | LinkedIn.


1 Answers

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.

like image 167
Elton Stoneman Avatar answered Oct 03 '22 14:10

Elton Stoneman