Using containers is not a new thing in technology. The idea of creating small footprint servers loading everything into it and having it easily deploy has been around for a while.
Docker has helped make the idea easier but also timed with the idea of dev ops(where the developer does everything) and the advent of the cloud where it becomes easy to spin up and down an application has helped spread the power and ease of the idea of containers.
What are Containers
Containers allow you to create a small image of what your server will look like. Load your application into the container and run it. The developers can then test and build the application. When it comes time to deploy the application they simply take the container image and hand it over.
Then it gets deployed to production and there is no more "it works on my machine"
Docker isn't the only option out there.
- Rocket - From CoreOS Rocket is a container run time for linux.
- LXD - For Ubuntu or OpenStack LXD a hypervisor optimized for the previously mentioned platforms. Unlike Docker, LXD containers don’t share processes providing full operating system isolation between instances.
- Windows Server Containers - As of writing this post still not fully out but I'm including them anyway Windows Server Containers On windows docker like but more isolated.
The container eco system is getting interesting at the moment. Docker is the big fish out there but there are other options that do different things.
Like everything in technology there is no one right answer for everything. If you have issues with something most likely you are not alone and someone has either solved the issue or is waiting for you to.