Skip to content

Latest commit

 

History

History
112 lines (76 loc) · 7.98 KB

docker-ecosystem.md

File metadata and controls

112 lines (76 loc) · 7.98 KB

PAAS

Deis (pronounced DAY-iss) is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

Docker powered mini-Heroku in around 100 lines of Bash.

Flynn deploys apps, scales apps, and manages databases.

Tsuru is an open source PaaS that makes it easy and fast to deploy and manage applications on your own servers.

Simple web focused Docker based mini-PaaS server. git push to deploy your websites as needed.

Panamax is a containerized app creator with an open-source app marketplace hosted in GitHub. Panamax provides a friendly interface for users of Docker, Fleet & CoreOS.

Service Discovery

Service discovery is used so that containers can find out about the environment they have been introduced to without administrator intervention. They can find connection information for the components they must interact with, and they can register themselves so that other tools know that they are available.

Service discovery / globally distributed key-value store by CoreOS. It implements an http API and has a command line client available on each host machine.

Service discovery / globally distributed key-value store by hashicorp. It has many advanced features that make it stand out including configurable health checks, ACL functionality, HAProxy configuration, etc.

Service discovery / globally distributed key-value store by Apache Foudation. More mature platform, missing some newer features.

Crypt allows components to protect the information they write using public key encryption. The components that are meant to read the data can be given the decryption key. All other parties will be unable to read the data.

Confd is a project aimed at allowing dynamic reconfiguration of arbitrary applications based on changes in the service discovery portal. The system involves a tool to watch relevant endpoints for changes, a templating system to build new configuration files based on the information gathered, and the ability to reload affected applications.

While marathon is mainly a scheduler, it also implements a basic ability to reload HAProxy when changes are made to the available services it should be balancing between.

Vulcand serves as a load balancer for groups of components. It is etcd aware and modifies its configuration based on changes detected in the store.

This project from Airbnb introduces an embedded HAProxy instance that can route traffic to components.

Nerve, also from Airbnb, is used in conjunction with synapse to provide health checks for individual component instances. If the component becomes unavailable, nerve updates synapse to bring the component out of rotation.

Networking

Developed by the CoreOS team, this project was initially developed to provide each host system with its own subnet of a shared network. This is a condition necessary for Google's kubernetes orchestration tool to function, but it is useful in other situations.

Weave creates a virtual network that connects each host machine together. This simplifies application routing as it gives the appearance of every container being plugged into a single network switch.

Pipework lets you connect together containers in arbitrarily complex scenarios. Pipework uses cgroups and namespace and works with "plain" LXC containers (created with lxc-start), and with the Docker.

Tinc is a lightweight VPN software that is implemented using tunnels and encryption. Tinc is a robust solution that can make the private network transparent to any applications.

ZeroTier provides network virtualization.

Orchestration (scheduling, cluster management, provisioning)

Cluster management: controlling a group of hosts

Scheduling: loading services on the host system by hooking into host init system or cluster-wide init system

Fleet is the scheduling and cluster management component of CoreOS. It reads connection info for each host in the cluster from etcd and provides systemd-like service management.

Marathon is the scheduling and service management component of a Mesosphere installation. It works with mesos to control long-running services and provides a web UI for process and container management.

Swarm is a scheduler by Docker team. It hopes to provide a robust scheduler that can spin up containers on hosts provisioned with Docker, using Docker-native syntax.

Apache mesos is a tool that abstracts and manages the resources of all hosts in a cluster. It presents a collection of the resources available throughout the entire cluster to the components built on top of it (like marathon). It describes itself as analogous to a "kernel" for a clustered configurations.

Google's advanced scheduler, kubernetes allows much more control over the containers running on the infrastructure. Containers can be labeled, grouped, and given their own subnet for communication. Can mount nfs,iscsi,glusterfs,ceph rdb volumes in side containers.

Docker's compose project was created to allow group management of containers using declarative configuration files. It uses Docker links to learn about the dependency relationship between containers.

Helios is a Docker orchestration platform for deploying and managing containers across an entire fleet of servers, developed by Spotify.

Nomad, a cluster manager and scheduler designed for microservices and batch workloads. Nomad is distributed, highly available, and scales to thousands of nodes spanning multiple datacenters and regions. Nomad supports Docker as a first-class workload type. Jobs submitted to Nomad can use the docker task driver to easily deploy containerized applications. Jobs can specify the number of instances required and Nomad will handle placement and recover from failures automatically.

Monitoring and management

Built on Docker Swarm, Shipyard gives you the ability to manage Docker resources including containers images, private registries and more.

Prometheus is an open-source systems monitoring and alerting toolkit.

More

Surf is a decentralized solution for cluster membership, failure detection and orchestration.

Log routing for Docker container logs.

Flocker is an open-source Container Data Volume Manager for Dockerized applications.

Above notes have been in large extent based on The Docker Ecosystem by Justin Ellingwood @ DigitalOcean.