How do you feel about Docker networking now? Docker has taken a complex technology, networking, and made it easy to understand and use. Most of the crazy, difficult setup stuff is literally handled with a single swarm init command. Let's review: you learned about the network design that Docker created, called the container network model, or CNM. Then, you learned how the libnetwork project turned that model into a pluggable architecture. After that, you found out that Docker created a powerful set of drivers to plug into the libnetwork architecture to enable a variety of network options for most of your container communication needs. Since the architecture is so pluggable, others have created even more network drivers that solve any edge cases that the Docker drivers don't handle. Docker networking has really come into its own.
I hope you are ready for more...