What s in a container
Briefly, a container encapsulates and isolates software code inside a container process that makes the code believe it has a machine all to itself, translating any system service calls out to the container host. Since containers are really just processes, many (presumably 1000's of) containers can simply share a single server, be it bodily or virtual.
The contained software bits think they've an entire running operating system to themselves (like they'd if hosted in a virtual machine), however they're truly sharing the host OS. This is less isolation between functions than digital machines provide, but additionally more efficient (because each container is just not running its own OS).
There are other advantages. Containers run in user space and thus are less more likely to corrupt, block or crash something on the kernel level. Containers are shortly copied, typically cached, and can be readily spun up and down. By design, containers can be absolutely built virtually wherever (like on all those developer MacBooks) and then run anyplace else persistently (like on Amazon Internet Companies). But all this means that containers have been originally designed to be stateless, containing no data 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 might be stateless in that they persist no inner data and might come and go (outside of atomic micro-transactions) dynamically as operational wants dictate.
Containerized software storage, nevertheless, 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 Management host, it doesn't take any current host information with it. As such, stateless containers usually are not suitable for a wide variety of functions that need a reliable and persistent knowledge service. Microservices that persist information at a micro-transaction degree into cloud storage, comparable to AWS S3, work effectively, however most purposes want more than that.