Web application · Virtualization

What is the actual purpose of Docker?

Whitney MPA Founder & Director at Hello, My Name is KING, Inc.

November 23rd, 2016

I'm hearing about Docker every other day, but when I look into it, I don't understand the purpose of it. I run many websites/applications that need isolation from each other on a single server, but I just use the pretty-standard OpenVZ containers to deal with that (yes I know I could use KVM servers instead, but I haven't ran into any issues with VZ so far).

What's the difference between Docker and normal virtualization technology (OpenVZ/KVM)? Are there any good examples of when and where to use Docker over something like OpenVZ?

Stephen Williams CTO & cofounder at Change My Path

November 24th, 2016

If you just set up a simple server, and don't mind going through the process manually every time you do it, then you don't need Docker and similar systems.  But if the architecture is complex, evolving, part of development, needs the most efficient maintenance, disaster recovery, etc., then the Docker ecosystem has quickly evolving solutions.  The early raw Docker systems were interesting, but you still had to deal with a lot of configuration and infrastructure.  After a lot of rapid evolution, we're getting to a really nice place.  These may provide some insight:
https://www.ctl.io/developers/blog/post/getting-started-with-application-templates
https://apps.openstack.org/
https://www.airpair.com/docker/posts/8-proven-real-world-ways-to-use-docker
https://www.nginx.com/blog/introduction-to-microservices/
http://developer.openstack.org/firstapp-libcloud/introduction.html

This has a good set of descriptions and diagrams for different application architecture types and levels:
http://docs.rightscale.com/cm/designers_guide/cm-cloud-computing-system-architecture-diagrams.html

Peter Eijk Vendor Neutral Cloud Security and Lean IT Risk Management

November 24th, 2016

Hi Whitney,
if you are running simple websites, i dont think Docker will be of much benefit. 
The biggest use cases I see are around rapidly evolving large microservice architectures. If that sounds complicated to you, I have made my point :-).

Devops people love it, for a number of reasons. 

I have some more material in a course I once ran.

there are a few free sections to look at. 

ping me if you want more details.

Alan Hannan Cloud Operations and DevOps

November 23rd, 2016

Are you familiar with stone soup?

Stephen Williams CTO & cofounder at Change My Path

November 23rd, 2016

OpenVZ gives you a lightweight container, i.e. what seems like a virtual machine but is really a private process and address space in a shared kernel.  A true virtual machine runs another copy of the operating system, with buffers and startup overhead again.  Docker is a system that makes container management very easy, repeatable, and sharable.  One of the fundamental ideas is combining container lifecycle automation with git: You can check out a container from a git repo, run it, make any kind of change, then save the result as a new version or branch or project.  A few seconds later, someone else can update to that version and run the exact same container instance.  This automates in a nice way all of the manual and error prone steps you'd need to duplicate this.  On top of that, we've had years now of automation improvements, virtual networking, service discovery, auto scaling, etc.