Docker provides an abstraction layer for deploying applications that contains all the dependencies and settings needed to run an application. It allows you to make reproductible deployments with high ratios of success.

In Docker the software is executed in transient environments called “containers” but it’s possible to persist some data by using volumes to preserve data in various locations like: A folder on the host computer, a hard drive, connection to a cloud service, to a RAMDisk, etc.

A container is boot up from a Docker image that contains all the necessary things to run the container (For example: files, environment settings, operating system, etc.) You can build you own images by creating a dockerfile with the instructions to create the environment.