https://www.youtube.com/watch?feature=player_embedded&v=wW9C... gives a super quick overview. Very interesting technology.
https://www.youtube.com/watch?feature=player_embedded&v=wW9C... gives a super quick overview. Very interesting technology.
Docker is a portable container engine. It gives you, the developer, a way to package your app and all its dependencies into a portable container which can be deployed on any modern Linux server: local VM, bare metal server, EC2 instance, doesn't matter. Containers are completely sandboxed and do not interfere with each other (think "iPhone apps for the server").
The specificities of each machine (location, distro, storage, networking) are abstracted away so you can focus on what your application requires (a known filesystem state, tcp ports to receive connections...) without having to worry about how those requirements will be met on each individual machine. This abstraction is based on common unix concepts - files, processes, tcp connections - and is therefore not language-specific, so it doesn't matter what programming language your application is written in.
To do this, Docker relies on a recent feature of the linux kernel called lxc. That's the part which allows sandboxing of applications from one another. The concept itself is not new - what is new is that it is now part of the mainstream kernel, which means almost every server in the world will soon be capable of running docker containers - hence the exciting possibility of "run anywhere".
Except doesn't it only run on Ubuntu? I looked at it to see if it might be useful for my servers, which are running Debian Wheezy, but the "Other Linux" instructions on the Docker site amount to "install VirtualBox and run Ubuntu" — which, yeah, anything will run anywhere if you just run it in a VM, but that was already true.
Docker is currently easier to run on certain distros than others. But it's not because it's distro-specific. It's because it has kernel requirements which are more easily met on certain distros than others. Those requirements are described at http://docs.docker.io/en/latest/installation/kernel/ (short version: aufs + lxc + (<=2.6 OR >=3.8))
Even just a list of software and kernel deps, then instructions on how to compile the rest of the software by hand would suffice.
For now I've had to muck around reading the Ubuntu packaging files to get a proper idea what/how you install this thing. Which isn't cool. :-(
The hardest part is to provide interchangeable, pluggable storage systems.
Albeit this is a very simplified vision, I don't think the complete use cases for docker have been hashed out quite yet. tl;dr dev ops is about to get magnitudes easier.