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.
Table of contents
The Container Ecosystem
- Container Platform Technologies
The Container Ecosystem (View on Github)
Core Container TechnologiesUse these tools to run a small number of containers on a single host |
||||
Docker open source | CoreOS open source | Other open source | Commercial | |
Container specifications An abstract definition of a standard “container”, allowing an ecosystem of technologies to support a standard container with potentially multiple, interchangeable runtime implementations |
|
|
||
Container runtimes This is your actual running container (essentially an abstraction of Linux kernel components like namespaces and cgroups that allow virtualization on top of a shared kernel) |
|
|
||
Container management These tools abstract low level control of your container runtime adding further functionality and usability |
|
|
||
Container definition These tools allow you to define specific containers, so they can be saved, shared and reproduced |
|
|
||
Registries Repositories for storing and sharing container images |
|
|
||
Operating systems OS’s that are designed for hosting containers |
|
|
|
|
VM management These tools help you manage the host virtual environments in which you run your containers |
|
|
Distributed Container TechnologiesUse these technologies to run applications on a distributed cluster of containers |
||||
Docker open source | CoreOS open source | Other open source | Commercial | |
Scheduling These tools manage placement of new containers across abstracted underlying resources |
|
|
|
|
Cluster definition These tools allow you to define and manage a cluster of dependent containers as a single composable entity |
|
|
||
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 |
|
|
|
|
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 |
|
|
Container Platform TechnologiesUse these technologies as complete platforms for running distributed applications across clusters of containers |
||||
Docker open source | CoreOS open source | Other open source | Commercial | |
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 |
|
|
||
Hosted container platforms These platforms offer container hosting and orchestration as a service |
|
|||
Container platform management These technologies add further abstracted management and control layers to distributed container environments, often through GUIs |
|
|
|
|
Container-based PaaS These platforms further abstract container-based infrastructures by managing application code deployment and offering PaaS-like user experiences |
|
Container-Native Support TechnologiesUse these additional container-native tools to support your container-based infrastructure |
||||
Docker open source | CoreOS open source | Other open source | Commercial | |
Networking |
|
|
||
Monitoring / Visibility |
|
|
|
|
Data layer |
|
|||
Log management |
|
|
||
CI/CD | ||||
Security | ||||
Getting started aides |
|
About the Container Ecosystem Project
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.
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.
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.
That’s all for now. I hope this can be a useful resource for the community!
Update: you can also comment on Hacker News here.
Further Reading
- Docker ecosystem introduction from Digital Ocean: https://www.digitalocean.com/community/tutorial_series/the-docker-ecosystem
- Lists of Docker ecosystem technologies
- Docker docs: https://docs.docker.com/
- CoreOS docs: https://coreos.com/docs/