What s in a container
Briefly, a container encapsulates and isolates application code inside a container process that makes the code imagine it has a machine all to itself, translating any system service calls out to the container host. Since containers are really just processes, many (possibly 1000's of) containers can easily share a single server, be it bodily or virtual.
The contained utility bits suppose they've an entire running operating system to themselves (like they'd if hosted in a virtual machine), but they're truly sharing the host OS. This is less isolation between functions than digital machines present, but also more efficient (because every Container Management just isn't running its own OS).
There are other advantages. Containers run in person area and thus are less prone to corrupt, block or crash something on the kernel level. Containers are shortly copied, often cached, and could be readily spun up and down. By design, containers can be totally constructed nearly anywhere (like on all those developer MacBooks) after which run anywhere else consistently (like on Amazon Net Companies). However all this means that containers were initially designed to be stateless, containing no information that wanted protection or persistence.
Containers have been initially designed for building microservices. A microservices architecture is nice for apps architected to be hosted in a cloud. These new apps have containerized bits which can be stateless in that they persist no inside knowledge and may come and go (outside of atomic micro-transactions) dynamically as operational needs dictate.
Containerized software storage, however, continues to be massive thorn. Apps running inside a container can access the local OS storage, but if the container is moved (or cloned, replicated, etc.) to a different container host, it would not take any present host knowledge with it. As such, stateless containers aren't suitable for a wide variety of functions that want a reliable and protracted data service. Microservices that persist data at a micro-transaction degree into cloud storage, similar to AWS S3, work effectively, but most applications need more than that.