Apache Mesos is an open source project and was originally designed to make a cluster of servers or nodes look like one single big server from the outside. Mesos is software that makes the management of computer clusters simple. Users of Mesos should not have to care about individual servers, but just assume they have a gigantic pool of resources to their disposal, which corresponds to the aggregate of all the resources of all the nodes in the cluster.
Mesos, in IT terms, is already pretty old, at least compared to the other orchestrators. It was first publicly presented in 2009. But at that time, of course, it wasn't designed to run containers since Docker didn't even exist yet. Similar to what Docker does with containers, Mesos uses Linux cgroups to isolate resources such as CPU, memory, or disk I/O for individual applications or services.
Mesos is really the underlying infrastructure for other interesting services built on top of it. From the perspective of containers specifically, Marathon is important. Marathon is a container orchestrator running on top of Mesos which is able to scale to thousands of nodes.
Marathon supports multiple container runtimes, such as Docker or its own Mesos containers. It supports not only stateless but also stateful application services, for example, databases such as PostgreSQL or MongoDB. Similar to Kubernetes and Docker SwarmKit, it supports many of the features described earlier in this chapter, such as high availability, health checks, service discovery, load balancing, and location awareness, to just name some of the most important ones.
Although Mesos and, to a certain extent, Marathon are rather mature projects, their reach is relatively limited. It seems to be most popular in the area of big data, that is, to run data crunching services such as Spark or Hadoop.