The general rule of thumb I use is "Will I need to ssh into this?" If so, LXD. "Am I just running one application?" Docker.
For devops engineers looking to build an entire enterprise around containers, LXD will be a great option when it reaches maturity and its ecosystem matures. It's not there yet, and probably won't be for a few years.
Another great company that's doing extremely cool things with LXC minus Docker is Flockport[0]
Can have application structured as multiple processes so can map VM patterns to it easier, without creating unnecessary containers.
Believe you also get better security between containers
Also LXC has been in the kernel longer and seems more mature (since 2.6.20-something).
That being said, I think Canonical has good vision and will execute. LXD combines the best from old and new school.
LXC in the kernel? It's a userspace toolkit that makes use of kernel technologies (namespaces, pivot_root, cgroups...), but I don't recall it being bundled as a part of it.
Sorry, I meant LXC support. Yeah it is comprised of a set of a features supported by regular Linux kernels + userspace tools. The feature set has been there for a quite a while.
> but I don't recall it being bundled as a part of it.
But it is in contrast to say OpenVZ which required patching the kernel to work.
If I have to coordinate multiple apps (three apps in this system, have to speak with each other over ports) and I want to run each app in its own container, on the same server, or distributed, can Ansible help me? Thanks.
Ansible is an automation tool which lets you create one or more playbooks for automatically configuring and deploying applications.
You certainly could use it to automate the configuration of these apps in containers, and for the case of distributed multi-machine arrangement it will improve your life.