Docker has made great strides in advancing development and operational agility, portability, and cost savings by leveraging containers. You can see a lot of benefits even when you use a single Docker host. But when container applications reach a certain level of complexity or scale, you need to make use of several machines. Container orchestration products and tools allow you to manage multiple container hosts in concert. Docker swarm mode is one such tool. In this course, we’ll explain the architecture of Docker swarm mode, and go through lots of demos to perfect your swarm mode skills.
After completing this course, you will be able to:
- Describe what Docker swarm mode can accomplish.
- Explain the architecture of a swarm mode cluster.
- Use the Docker CLI to manage nodes in a swarm mode cluster.
- Use the Docker CLI to manage services in a swarm mode cluster.
- Deploy multi-service applications to a swarm using stacks.
This course is for anyone interested in orchestrating distributed systems at any scale. This includes:
- DevOps Engineers
- Site Reliability Engineers
- Cloud Engineers
- Software Engineers
This is an intermediate-level course that assumes:
- You have experience working with Docker and Docker Compose
Here we are the of this course about container orchestration with Docker swarm mode. I hope you it has been as fun for you as it was for me. We covered a lot of ground in this course. Let's take a look back at what we learned.
We started with a high-level overview of swarm mode and then dove into various components of the swarm mode architecture. The first was networking.
We learned about the overlay network type that makes networking swarm services distributed across multiple hosts extremely easy.
We saw how swarm accomplishes load balancing by virtual IP or by DNS round robin.
Finally, we saw swarm services can be accessed via any node when using ingress port publishing. That is possible thanks to the swarm mode routing mesh.
After that, we looked at the headline architecture component: container orchestration. In that lesson we saw how to influence the placement of services on the swarm,
and we also considered rolling updates and rollbacks.
The next architecture component was consistency. Swarm mode uses the raft consensus algorithm for guaranteeing a consistent state of the swarm. Managers participate in elections and elect a single leader responsible for making changes to bring the actual swarm state to the desired state.
We examined the fault-tolerance and performance tradeoff related to the number of managers in a swarm. You should consider using 3, 5, or 7 for production workloads.
Lastly, we discussed the raft logs where cluster state is persisted.
Security was the last architecture component we looked at.
Swarm mode has many security features enabled by default including public key infrastructure and token semantics for joining members to a swarm.
Data plane communication on overlay networks is optionally encrypted using IPSec.
We also learned how you can improve swarm security by taking control of keys used for decrypting raft logs through a feature called autolocking.
Then we started getting hands-on and learned about options for setting up swarms from single-node, to mutli-node, and from on-prem to in the cloud. We then created a single-node swarm and a multi-node swarm with the help of docker machine.
Following that, we discussed node management in swarm. We demonstrated routine tasks such as promoting, demoting, labeling, and setting a node's availability to schedule jobs.
The next demo focused lesson was about service management. We saw how to create and update services using various configurations such as host and ingress routing, global and replicated services, resource and placement constraints, and updates and rollbacks.
In the last demo lesson, we explored using stacks for managing distributed applications in Docker swarm mode. Stacks are represented using Compose files and have swarm specific configuration under the deploy key.
By taking this course, you have achieved the following learning outcomes. You are able to:
" Describe what Docker swarm mode can accomplish
" Explain the architecture of a swarm mode cluster
" Use the Docker CLI to manage nodes in a swarm mode cluster
" Use the Docker CLI to manage services in a swarm mode cluster
" Deploy multi-service applications to a swarm using stacks
There are a few places I can recommend for learning more. Try out some of the labs, quizzes or other courses on Cloud Academy. There is more content on swarm as well as other container orchestration tools in case you want to understand the entire ecosystem.
The Docker Swarm Mode docs are a great place to learn all the intricacies of swarm mode and to stay on top of release changes.
The Docker swarmkit GitHub repository is the ultimate place to learn about swarm mode from its source. See what features are coming next for swarm mode and learn from discussions around reported issues. Maybe even report your own or contribute to the code base.
I'm happy to hear from you. I make content for you. If you have any feedback, please get in touch with me by leaving a comment on the Comments tab below the video, by emailing firstname.lastname@example.org, or by connecting with me on Twitter where my handle is @LoganRakai.
That does it for another course here on Cloud Academy. You have developed some serious Docker swarm mode skills and should be proud of your accomplishment. Now go and do me the ultimate service by putting what you've learned here into practice. Until next time, I'm Logan Rakai with Cloud Academy.
What's that? All right, swarm twister, take us away!
Logan has been involved in software development and research since 2007 and has been in the cloud since 2012. He is an AWS Certified DevOps Engineer - Professional, AWS Certified Solutions Architect - Professional, Microsoft Certified Azure Solutions Architect Expert, MCSE: Cloud Platform and Infrastructure, Google Cloud Certified Associate Cloud Engineer, Certified Kubernetes Security Specialist (CKS), Certified Kubernetes Administrator (CKA), Certified Kubernetes Application Developer (CKAD), and Certified OpenStack Administrator (COA). He earned his Ph.D. studying design automation and enjoys all things tech.