When we talk about containers in the Docker world, we are technically talking about Linux containers. As stated by Red Hat on their website (https://www.redhat.com/en/topics/containers/whats-a-linux-container):
Though the concept is not new, Docker makes it possible to create containers that are easy to build, deploy, version, and share. A Docker container only contains dependencies that are required for the application to run on the host OS; it shares the OS and other dependencies for the host system hardware. This makes a Docker container lighter than a virtual machine (VM) in terms of size and resource usage as it doesn't have to ship an entire OS and emulate virtual hardware. Hence, Docker made virtual machines obsolete in many of the traditional use cases that were handled using VM technologies. This also means that, with Docker, we will be able to run more applications on the same hardware compared to running with VMs. Docker containers are instances of a docker image, which is a set of layers which describes the application that is being containerized. They contain the code, runtime, libraries, environment variables, and configuration files needed to run the application.