Docker is one of the most exciting open source projects of recent years. By packaging the application in a container with all the other software it needs to run, Docker enables applications developed on a laptop to run in the same way on a production server.

Being in production, however, introduces a whole host of challenges that you don’t always think about in development. Now you have to worry about connectivity, load balancing to scale and handle increased load, being secure against malicious users, and sharing resources with potentially hundreds of other apps (or microservices) running in the same environment. Having a good Docker networking and service discovery architecture in place is key to being successful with your Docker‑based applications.