Before containerization, virtualization was the best way to isolate and organize applications, each in their own VM, allowing multiple applications to run on the same physical hardware. Each application running has their own guest OS.
Containerization abstracts OS, allowing applications to run in a container which shares the host OS and holds only those application which is related to binaries and libraries. Deployments are faster and more reliable because they only contain applications specific to libraries that are isolated from other containers.
The primary difference between containerization and virtualization is that containers provide a way to virtualize an OS and run multiple workloads in one OS instance, while hardware is virtualized to run multiple OS instances in VMs. The portability and speed of containers makes it a tool to streamline software development.