Although the technology behind containers is at least 30 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 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
PHP's 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 things such...