LXD is a system container and virtual machine manager. It offers a unified user experience around full Linux systems running inside containers or virtual machines. LXD is image based and provides images for a wide number of Linux distributions. It supports various use cases, with support for different storage backends and network types and the option to install on hardware ranging from an individual laptop or cloud instance to a full server rack. LXD is written in Go. It is free software…
There's really no reason to ever use Mesos. We switched over to Kubernetes and it's been a breath of fresh air - better CD support, easy CLI for browsing logs, no mysterious dangling redeploys. If you're looking for a tool to manage a fleet of Docker containers on VMs, Kubernetes beats Mesos by a wide margin.
Linux Containers LXD works very well when you, as a software developer using Linux, need to spin up a development environment to build and work on a specific piece of software. For example, you need to build some software that is tested and developed target Ubuntu 18.04. You're able to quickly create a container for Ubuntu 18.04 and log into it to run commands and build your software. This is easier to do than setting a virtual machine - e.g - via Virtual Box, but is a lot clunkier than doing it via Docker containers which give you a much more flexible configuration of the environment and are easier to start, stop, connect and share with other developers.
Mesos may have many frameworks. If you have Mesos installed on your servers, you may use it for many kinds of tasks. Today we're running only web applications but the idea is to install a different framework for big data soon.
Unreliable deployments that would fail for no good reason. Sometimes our Docker container would be "restarting" forever because Mesos thought it didn't have enough resources to start the container.
Impossibly slow UI. Built in React under the hood with a lot of bloatware backed in, so loading the Mesos UI on a slow internet connection was painful.
No real logging solution - it would stream "console.log()" output to the UI, but searching for logs wasn't really possible without downloading a huge file.
No built-in support for redeploying containers from a CI. We had to create a service whose whole job was to expose an HTTP endpoint that restarted a container, and then made Circle CI ping the endpoint whenever we wanted to redeploy.
Kubernetes is really great and their community is growing really fast (Google influence). We evaluated it in the beginning and it would fit for our web applications workload. We decided to proceed with Mesos because it has more potential. You may use a different framework for different kinds of tasks on Mesos. There is a Kubernetes framework for Mesos, by the way.
Linux Containers LXD feels like a more primitive version of docker, docker-compose and similar projects from the docker ecosystem. The Dockerfile and docker-compose.yml methods of specifying a container setup, as well as the network and file configurations afforded by Docker make working with containers much easier and more reproducible than with Linux Containers LXD.