Docker is a tool that designed to make easier to create, deploy and run applications by using containers. Containers give chance to developers to wrap up an application with all necessary parts such as libraries and other dependencies, and package up it as one package. Therefore, thanks to container, developers can be sure that the application will run on any other Linux machine regardless of any special settings that machine can have that differ from the machine used for testing.
Considering its characteristic, Docker behaves like virtual machine but unlike the virtual machine, instead of creating a whole operating system, Docker allows applications to use same kernel like the system they are running on it and only requires applications be consigned with things not already running on the host computer. This provides serious performance improvement and reduce the application size.
Container image is a lightweight, stand-alone and executable package of software that includes everything necessary to run it for instance code, runtime, system tools, system libraries and settings.
Docker containers share the machine’s operating system kernel; they start instantly and use less compute and RAM.
Docker containers are based on open source standards and run on all major Linux distributions, Microsoft Windows, and on any infrastructure including virtual machines.
Docker containers isolate applications from one another and from the underlying infrastructure. Docker provides the strongest default isolation to limit app issues to a single container instead of the entire machine.