Docker Container versus Virtualization
Docker containers offer a very efficient alternative to virtualization. However, they are not “real” virtualization since each container has separate resources, its own memory, and its own file systems, but all share, for instance, one kernel. Therefore, this approach has some disadvantages. A Docker container can only use Linux and only the same kernel as the host operating system—consequently Windows applications, for instance, cannot be run on a Linux machine this way. The separation of the containers is not as strict as in the case of real virtual machines. An error in the kernel would, for example, affect all containers. Moreover, Docker also does not run on Mac OS X or Windows. Nevertheless, Docker can directly be installed on these platforms. Behind the scenes a virtual machine with Linux is being used. Microsoft has announced a version for Windows that can run the Windows container.
Communication between Docker Containers
Docker containers have to communicate with each other. For example, a web application communicates with its database. For this purpose, containers export network ports that other containers use. Besides, file systems can be used together. There containers write data that can be read by other containers.