I could not decide what to write for my 100th post but somehow I could not get LXD(lex-dee) off my radar. It popped up on my reading list and google searches like a bad dream. To hear Ubuntu talk about LXD they swear it’s meant to coexist with Docker but when you start to parse the marketing speak you might get a different picture; as I did.
- for marketeers (link)
- for the casual observer (link)
- and for marketeers who are in denial (link)
- for the developer (link, link2)
While Ubuntu is making verbal declarations that LXD and Docker are meant to coexist the evidence is underwhelming. In the links above you’ll read that LXD uses LXC. LXC was the container technology that Docker was built upon until Docker started to build it’s own container wrapper (presumably to patent the API).
While LXD may ultimately become a lightweight, complete and secure virtualization of the host OS within which you might be able to execute Docker containers but is this really what is needed or asked for? Let’s face it. Ubuntu is in the business of selling Ubuntu and a Docker wrapper does not support that function, however, a wrapper layer that promotes vendor lockin does.
Let’s look at this a slightly different way. Docker is a lightweight container. It’s meant to be a single process container although it’s not a strict requirement. However, a Docker instance was not meant to be a complete OS; just a sandbox of sorts. This approach to containerization means that you get some pretty nice application density because you’re not running a whole lot. On the other hand, LXD is meant to be a complete OS running in a container. All those extra process are going to weigh down the most nimble of systems.
Since LXD seems to be some vaporware in terms of real features let’s hope it get’s fleshed out sooner than later.