Understanding containers
Although the technology behind containers is at least thirty years old, it's only in the last few years that containers have really taken off (to mix a metaphor). This is largely thanks to the rise of Docker, a software platform which makes it easier to create and manage containers.
The deployment problem
The problem that Docker solves is principally one of software deployment: that is, making it possible to install and run your software in a wide variety of environments with minimal effort. Let's take a typical PHP web application, for example. To run the application you need at least the following to be present on a node:
- PHP source code
- PHP interpreter
- Its associated dependencies and libraries
- PHP modules required by your application
- Compiler and build tools for building native binaries for PHP modules
- Web server (for example Apache)
- Module for serving PHP apps (for example,
mod_php
) - Config files for your application
- User to run the application
- Directories for...