Before my Ubuntu upgrade hell in 2011 I had my home servers running in OpenVZ containers. This paravirtualization used one Linux kernel, and each container was a chrooted/jailed environment that also had security context separated from the host an other containers by OpenVZ kernel modifications. The containers aren’t virtual machines but could share RAM, storage CPU use and the Linux kernel from the host. Combined with copy-on-write filesystems I had a base ubuntu image with several variations that took up much less disk and RAM than a traditional hypervisor VM would.
Also, there was no reason that a container had to be a whole OS image. I experiemented with compiling apps with their dependent libraries and putting just those files in a container. Imade it work but not easily enough that I did that for all my services (e.g. home web server, file share, game server, email server, etc.).
However, Ubuntu 10.4 did away with its OpenVZ support in favor of LXC. At the time I did it, I could make it work, but it was a lot of trouble because it was new, poorly documented and its support tools sucked. (Although once I got it started it ran fine and was stable.) I was making other changes and wanted to experiment more with Windows and Hyper-V, so I chucked all the Ubuntu and Debian and went mostly with Hyper-V and Server 2008 for a couple of years.
Of course I still had an Ubuntu VM around and several times spun up another hard or vm Ubuntu instance. I toyed some with Windows, and Hyper-V is pretty handy for what it is, but I just don’t enjoy toying around with Windows servers like I do Linux. Rsync and ssh are big examples of what I miss. Sure, there is WinSSHD and available freely, but for some reason I couldn’t find an rsync server free for Windows. Well, besides Cygwin, but to me if I’m putting Cygwin on a server I might as well just use Linux or FreeBSD in the first place. I’ve even picked up quite a bit of Powershell, but things just make more sense to me in the unix-y world. So lately I’ve been doing more and more of my playtime on an Ubuntu VM running under Hyper-V.
Then a week or so ago I stumbled up on Docker (Wikipedia, Docker image registry). Docker sounds like everything I ever wanted from paravirtualization, plus a few things didn’t even realize I wanted. Its aim is to make portable paravirtualization containers. One of the things I didn’t dwell on under OpenVZ and later LXC was that after I got it set up it was not easy to move to a new host. Docker aims to make that easy by design.
I have only toyed around with it a little so far, but I already think I see that most people are missing some of the cooler points. I’ll see if I can help fix that here.