At Appsembler, we've built a system to deploy personalized learning labs using Docker Swarm. Each learning lab consists of arbitrary software running in a Docker container, so each student can have their own isolated environment to learn and experiment. The containers can be paired with another container running the Cloud9 IDE, allowing students to modify code and see the results in real time without the need to install anything on their own system.
Our system uses Docker Swarm to deploy and manage containers. To ensure the system is robust, we have automatic failover between Swarm managers (known as high availability). We'll discuss how we're using Consul to implement a highly available Swarm cluster, as well as other features of Swarm that we're using.