In Chapter 1, Docker Overview, we discussed a few of the problems that Docker has been designed to solve. We explained how it addresses challenges such as running two applications side by side by isolating processes into a single container, meaning that you can run two entirely different versions of the same software stack, say PHP 5.6 and PHP 7, on the same host, as we did in Chapter 2, Building Container Images.
Towards the end of Chapter 4, Managing Containers, we launched an application that was made up of multiple containers rather than running the required software stack in a single container. The example application we started, Moby Counter, is written in Node.js and uses Redis as a backend to store key values, which, in our case, were the location of the Docker logos on screen.
This meant that we had to launch two containers, one for the application...