Container deployment, scaling, and orchestration with Docker Swarm
You've installed Docker, you know how to run containers, you've written Dockerfiles to build container images for your applications (or parts of your applications), and perhaps you're even using Compose to describe your application stack as an assemblage of multiple containers.
But how do you go to production? What modifications are necessary in your code to allow it to run on a cluster? (Spoiler alert: very little, if any.) How does one set up such a cluster, anyway? Then how can we use it to deploy and scale applications with high availability requirements? What about logging, metrics, and other production-related requirements?
In this workshop, we will answer those questions using tools from the Docker ecosystem, with a strong focus on the native orchestration capabilities available since Docker Engine 1.12, aka "Swarm Mode."
- build and run micro-services with Docker Compose
- identify bottlenecks and scale containers
- describe concepts and features of SwarmKit and Swarm Mode
- set up and manage a cluster with Swarm Mode
- operate of a local container registry
- deploy our micro-services app on Swarm
- configure and troubleshoot overlay networks
- perform rolling updates
- collect application logs using a centralized logging stack
- collect node and container metrics using a centralized telemetry stack
- manage stateful services with Docker volumes
- simplify application life cycle using Compose feature
The whole workshop will use "real-world" demo applications with web frontends, web services, background workers, and stateful data stores, in order to cover a wide gamut of use cases.
Come with your laptop! You don't need to install anything before the workshop, as long as you have a web browser and a SSH client.
Each attendee will be given a cluster of 5 nodes for the duration of the workshop, and will be able to build, ship, and run the demo application on this cluster, to get hands-on experience.
You won't need to pre-install Docker before the course: each student will be given credentials to connect to an individual cluster of virtual machines. So all you need is a computer with a SSH client!