Why it is so popular? Make shipping code to server easier. For multiple softwares on multiple machines it is a pain to set the environment and dependencies up on every intersection. It is like the traditional shipping industry, in which you have to send different goods by different transportation means. At the beginning each transportation company needs to have their own experts to deal with the packing and shipping details. Then the standardized shipping container becomes a solution that all shipping companies agree on so that they can get separate from sending the containers. They only need to care about how to put goods into containers. A variety of infrastructure providers can organize containers. Later new infrastructure tools can be added or updated but the containers do not need to be repackaged. This standardization makes shipping easier and cheaper. For softwares, developers have a standard way to pack their softwares into a container with standard properties. Then developers send containers to tool makers/Ops teams/infrastructure providers and these makers know how to handler the containers in a particular way.