The way I see it, Docker is more than a DevOps tool – it is a better way to deploy infrastructure to applications that need state, such as SQL, NoSQL, message queues, key value databases, etc. When you want to deploy a stateful application, your choices are bare metal or virtual machines. There are draw
The way I see it, Docker is more than a DevOps tool – it is a better way to deploy infrastructure to applications that need state, such as SQL, NoSQL, message queues, key value databases, etc.
When you want to deploy a stateful application, your choices are bare metal or virtual machines. There are draw backs with both of them.
Bare metal drawbacks: Static fixed allocation of resources and hardware. If a machine fails, physical intervention is required – all the reasons VMWare took off in the datacenter.
Virtualization drawbacks: Costly and poor server utilization. OS, CPU and memory overhead. Allocation of storage is virtual machine centric instead of application centric. What this means is that storage is allocated to a VM and then that needs to be made available to the application inside the VM as if it were on bare metal. These are two distinct steps: (1) allocate storage on a SAN or NAS and (2) attach it to a VM. This is an artifact of storage and allocation of infrastructure still being machine centric instead of application centric. With virtualization, when it comes to infrastructure provisioning improvements, you made a lateral move.
A new choice: Deploy applications in containers on bare metal.
Deploy infrastructure as containers. Run your application in Docker and run your storage as a Docker volume provider on bare metal. See this blog post on how volumes are automated with Docker. You get the best of both worlds. You can deploy your applications with the agility of a virtualized environment and no static provisioning of resources.
You get bare metal performance and no virtualization overhead.
That’s right – you can deploy storage services as a container on bare metal servers. So your stateful apps are docker, your storage is docker, everything is run as a container. On generic hardware.
You can additionally manage the infrastructure from a DevOp friendly way (think of using the Docker CLI to add and expand the volumes as opposed to configuring external storage arrays).
Transforming IT Ops is where we are headed with Docker.
After seeing all the recent innovation at the DockerCon events, I think Docker is going to be more disruptive as an IT operations solution than a developer tool. It will be THE way infrastructure is managed in a large scale enterprise.
Did you enjoy what you just read? Learn more about Docker storage, Kubernetes storage or DC/OS storage.