A container is a software package that contains everything the software needs to run. This includes the executable program as well as system tools, libraries, and settings. Containers are not installed like traditional software programs, which allows them to be isolated from the other software and the operating system itself.
The isolated nature of containers provides several benefits. First, the software in a container will run the same in different environments. For example, a container that includes PHP and MySQL can run identically on both a Linux computer and a Windows machine. Second, containers provide added security since the software will not affect the host operating system. While an installed application may alter system settings and modify resources, such as the Windows registry, a container can only modify settings within the container. This makes containers ideal for software testing and development.
Containers also eliminate installation issues, including system conflicts, version incompatibilities, and missing dependencies. The result is a "works on all machines" solution, which is ideal for both developers and end users. It also makes the jobs of network administrators easier, since they can deliver containers to a multiple users without having to worry about compatibility issues.
Containers vs Virtual Machines
Containers are similar to virtual machines (virtualization) since they include everything needed to run in a single package. However, unlike virtual machines (VMs), containers do not include a guest OS. Instead containers run on top of a "container platform," like Docker, which is installed on an operating system. Containers are "lightweight," meaning they require far less disk space than VMs. Additionally, multiple containers can run side-by-side on the same container platform.