Docker is yet another scheme for running stuff in a sandbox. They call these containers, like a standardized shipping container. I wonder if they actually took the time to read “The Box: …“, since it’s an amazing book.
Docker is also the usual hybrid open-source/commercial/vc-funded kind of thing. Of course it has an online hub/repository. Sort of like the package managers do; but in this case run by the firm. Sort of like github. The business model is interesting, but that’s – maybe – for another post.
Docker stands on a huge amount of work done over the last decades by operating system folks on the sandboxing problem. It’s really really hard to retrofit sandboxing into an existing operating system. The redesigned thing is likely to have a lot of rough edges. So – on the one hand – Docker is a system to reduce the rough edges. Let meer mortals can play with sandboxes, finally. But it is also trying to build a single unified API across the diversity of operating systems. In theory that would let me make a container which I can then run “everywhere.” “Run everywhere” is perennial eh?
Most people describe docker as an alternative to virtual hosting (ec2, vmware, etc. etc.). And that’s true. But it’s also an alternative to package managers (yum, apt, homebrew, etc. etc.). For example say I want to try out “Tiny Tiny RSS,” which is a web app for reading RSS feeds. I “just” do this:
docker run -name=my_db -d nornagon/postgres docker run -d --link my_db:db -p 80:80 clue/ttrss open http://localhost/
Those three lines create two containers, one for the database and one for the RSS reader. The 2nd link links the database into the RSS container, and exposes the RSS reader’s http service on the localhost. The database and RSS reader containers are filled in with images that are downloaded from the central repository and caches. Disposing of these applications is simple.
That all works on a sufficiently modern Linux since that’s where the sandboxing support docker depends on is found. If your are on Windows or the Mac then you can install a virtual machine and run inside of that. The installers will set everything up for you.