< back to blog

The Container Ecosystem Project

Knox Anderson
Knox Anderson
@
The Container Ecosystem Project
Published:
October 21, 2015
Table of contents
This is the block containing the component that will be injected inside the Rich Text. You can hide this block if you want.
This is the block containing the component that will be injected inside the Rich Text. You can hide this block if you want.

The ecosystem of awesome new technologies emerging around containers and microservices can be a little overwhelming, to say the least. We thought we might be able to help: welcome to the Container Ecosystem Project. The goals of this project are (1) to clearly lay out the different types technologies that make up the growing container ecosystem and the microservices technology stack – starting from the lowest levels of core container technology, and rising up through layers of abstraction to full-blown container platforms and support tools – and (2) to put forth the latest and greatest examples of each type of technology. This project is a living document – please suggest edits to the github repo and see below for more info.

\r\r

Table of contents

\r\r

\r\r

The Container Ecosystem (View on Github)

\r\r

\r
  • \r Hashicorp Otto: extends Vagrant to deploy and manage VMs across many platforms\r
  • \r \r \r

    \r\r

    \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r
    \r

    \r Distributed Container Technologies\r

    \r \r Use these technologies to run applications on a distributed cluster of containers\r
    \r \r Docker open source\r \r CoreOS open source\r \r Other open source\r \r Commercial\r
    \r Scheduling
    These tools manage placement of new containers across abstracted underlying resources\r
    \r
      \r
    • \r Docker Swarm: designed to extend Docker API to a cluster; includes scheduling and service discovery\r
    • \r
    \r
    \r
      \r
    • \r fleet: low level orchestration included in CoreOS; supports basic scheduling; can be used to bootstrap Kubernetes for higher level orchestration\r
    • \r
    \r
    \r
      \r
    • \r Chronos: framework for scheduling on Mesos\r
    • \r
    \r
    \r
    \r Cluster definition
    These tools allow you to define and manage a cluster of dependent containers as a single composable entity\r
    \r
      \r
    • \r Docker Compose: text files used to define and configure a distributed application across a cluster of Docker containers\r
    • \r
    \r
    \r
      \r
    • \r fleet unit file: fleet uses a specialized version of systemd unit files to define a distributed application across containers\r
    • \r
    \r
    \r \r
    \r Service discovery / Distributed configuration storage
    These tools allow applications within different containers to discover each other and share configuration information (eg. IP addresses or application settings); usually implemented as a globally distributed key-value store\r
    \r
      \r
    • \r Docker Swarm comes with built in service discovery, but can also use etcd, Consul, Zookeeper\r
    • \r
    \r
    \r
      \r
    • \r etcd: globally distributed key-value store; included with CoreOS for service discovery\r
    • \r
    \r
    \r
      \r
    • \r Marathon: framework for initializing long running jobs on Mesos; includes service discovery and cluster management functionality\r
    • \r
    • \r Hashicorp Consul: service discovery, key/value store, and cluster health checking; uses Serf\r
    • \r
    • \r Apache ZooKeeper: globally distributed key-value store\r
    • \r
    \r
    \r
    \r Dynamic configuration management
    These tools let you dynamically update application settings based on changes to your distributed key-value store in applications that don't natively support this\r
    \r \r
      \r
    • \r confd: originally built for etcd, but now supports Consul and ZooKeeper\r
    • \r
    \r
    \r \r \r

    \r\r

    \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r
    \r

    \r Container Platform Technologies\r

    \r \r Use these technologies as complete platforms for running distributed applications across clusters of containers\r
    \r \r Docker open source\r \r CoreOS open source\r \r Other open source\r \r Commercial\r
    \r Container orchestration platforms
    These platforms include or abstract away all of the core functionality (listed above) needed for container cluster management ("orchestration"), including container management, scheduling, cluster definition, and service discovery\r
    \r
      \r
    • \r Docker Swarm, Compose, and Machine can all run together to create a complete orchestration platform (still beta); Docker Swarm can also support more advanced orchestration tools like Kubernetes\r
    • \r
    \r
    \r \r
      \r
    • \r Apache Mesos: mature, highly scalable service that abstracts a pool of underlying resources and distributes "tasks" (including Docker images) from various application frameworks; uses Marathon and Chronos to add cluster management, scheduling, and service discovery; also can support Kubernetes\r
    • \r
    • \r Kubernetes: orchestration platform designed specifically for running microservices on clusters of containers; includes scheduling, cluster management and service discovery through abstractions such as "pods", "replication controllers (RCs)", and "services"; originally from Google, now donated to the CNCF\r
    • \r
    • \r Hashicorp Nomad: uses Consul\r
    • \r
    \r
    \r
    \r Hosted container platforms
    These platforms offer container hosting and orchestration as a service\r
    \r \r \r \r \r
    \r Container platform management
    These technologies add further abstracted management and control layers to distributed container environments, often through GUIs\r
    \r
      \r
    • \r Project Orca: opinionated management GUI built on top of full stack of Docker technologies; still alpha\r
    • \r
    \r
    \r \r \r \r \r
    \r Container-based PaaS
    These platforms further abstract container-based infrastructures by managing application code deployment and offering PaaS-like user experiences\r
    \r \r \r \r \r

    \r\r

    \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r \r
    \r

    \r Container-Native Support Technologies\r

    \r \r Use these additional container-native tools to support your container-based infrastructure\r
    \r \r Docker open source\r \r CoreOS open source\r \r Other open source\r \r Commercial\r
    \r Networking\r \r
      \r
    • \r Docker port expose: Docker feature that links a container port to a host port\r
    • \r
    • \r Docker linking: Docker feature offering a basic connection between containers on the same host\r
    • \r
    • \r libnetwork: advanced container networking library (still "under heavy development")\r
    • \r
    \r
    \r
      \r
    • \r flannel: overlay network built using etcd that gives each host a separate subnet for its containers\r
    • \r
    \r
    \r
      \r
    • \r Weave: overlay network that puts all containers in a distributed system onto a single virtual network; also includes service discovery functionality\r
    • \r
    • \r Calico: layer 3 virtual network that provides each container with an IP address\r
    • \r
    \r
    \r
    \r Monitoring / Visibility\r \r \r \r \r
      \r
    • \r sysdig: CLI for deep system/containers visibility; includes curses-based "csysdig" interface\r
    • \r
    • \r cAdvisor: basic container metrics exporter from Google; includes web GUI; Heapster adds Kubernetes support\r
    • \r
    • \r Weave Scope: container network topologies\r
    • \r
    \r
    \r
      \r
    • \r Sysdig Cloud: uses sysdig; includes web-based UI, application topologies, and support for all major container formats and orchestration platforms\r
    • \r
    \r
    \r Data layer\r \r \r \r
      \r
    • \r CusterHQ Flocker: data volume manager for running stateful services like databases in containers\r
    • \r
    \r
    \r
    \r Log management\r \r \r \r \r
      \r
    • \r logspout: log router for Docker containers\r
    • \r
    \r
    \r
    \r CI/CD\r \r \r \r \r \r
    \r Security\r \r \r \r \r \r \r
    \r Getting started aides\r \r
      \r
    • \r Docker Kitematic: basic Docker GUI designed for getting started with Docker\r
    • \r
    • \r Docker Toolbox: installer for a package of core Docker tools\r
    • \r
    \r
    \r \r \r

    \r\r

    About the Container Ecosystem Project

    \r\r

    Here at Sysdig, the container-native visibility company, we talk to a lot of people in the container ecosystem: both consumers and producers of technology. And wow, there is a LOT of cool technology out there – and so much more coming out all the time. It can be hard to keep up with, even if you're a seasoned expert, much less as a curious newcomer just trying to figure out where to start. There are plenty of great guides out there for various container technologies and use cases (see below for some links). But we had yet to find a clearly organized survey of the different core technologies that make up the container ecosystem and the typical microservices stack. So we decided to make one: the Container Ecosystem Project.

    \r\r

    The goal of this project is to clearly lay out the different core technologies that might be important for anyone interested in containers and microservices – starting from the lowest levels, and rising up through layers of abstraction to full-blown container platforms. For each type of technology (broken into rows), we've tried to provide a brief description (see the left column), as well as list examples currently available for that technology (see the other columns). We've separated out open source solutions from commercial offerings, and two of the leading open source container technology producers, Docker and CoreOS, each got their own column. Throughout the doc, we've tried to mark beta technologies and parent technologies accordingly. Ideally, this document can introduce you to the microservices stack, and give you some keywords that you can then go research further on your own to learn more – but at least you'll hopefully have the big picture from here.

    \r\r

    This framework is not, of course, a perfect science, but we've done our best to create MECE categories by row, and to put each technology in the most appropriate row. We are almost certainly missing many great technologies, and many technologies listed here do not yet have perfect descriptions. This will be a work in progress. If you have any suggested edits, please tweet us or submit a pull request. We'll do our best to keep this document up to date and prune off deprecated or abandoned technologies as the ecosystem evolves.

    \r\r

    That's all for now. I hope this can be a useful resource for the community!

    \r\r

    Update: you can also comment on Hacker News here.

    \r\r

    Further Reading

    \r\r

    About the author

    No items found.
    featured resources

    Test drive the right way to defend the cloud
with a security expert