What is Docker?
Docker automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of operating system level virtualization on Linux or Windows Server.
What does this mean?
Instead of heavy virtualization, you can run independent “containers” to work within a single Linux or Windows 2016 instance (or virtual machine), avoiding the overhead of multiple full virtual machines. By isolating and virtualizing individual resources and maintaining access to singular kernel features, rather than virtualizing the whole kit and caboodle, significant performance gains are possible.
Docker started out as an internal project within dotCloud, a Platform as a Service (PaaS) company. With Linux, portability of applications with various dependencies was never assured. “Dependency hell,” though frequently associated with .NET development, is a reality for Linux-centric development.
Prior to version 0.9, Docker used an operating-system level virtualization method called LXC (Linux Containers) that allowed multiple systems to use a single Linux kernel. After 0.9, Docker switched to their own container library, libcontainer, written in Go. This library is an abstraction, designed to support a wider range of isolation technologies. It sounds complex, but to boil it down, libcontainer provides a standard way to make containers inside an OS, which has opened the door for support beyond Linux.
Docker for Windows, not to be confused with the native support for Windows containers in Windows Server 2016, used to rely on Oracle’s VirtualBox running lean versions of Linux. Now, Docker for Windows requires Windows 10 (with the 1511 November update) and above, with Hyper-V installed. Docker for Windows makes use of the hypervisor layer and then installs a minimalist distribution of Alpine Linux with the Docker engine installed on it. Better than VirtualBox implementations, the developer enjoys a native experience and integration with the Windows machine.
Docker for Mac also used to require VirtualBox, but with Mac OS X 10.10.3 and above on post-2010 Mac hardware, it will use the new hypervisor framework called xhyve.
[feature_box_creator style="1" width="" top_margin="" bottom_margin="" top_padding="" right_padding="" bottom_padding="" left_padding="" alignment="center" bg_color="" bg_color_end="" border_color="" border_weight="" border_radius="" border_style="" ]
Want to learn more about Dockers?
[/feature_box_creator]