A container may be only tens of megabytes in size, whereas a virtual machine with its own entire operating system may be several gigabytes in size.
Containerization allows for greater modularity. Rather than run an entire complex application inside a single container, the application can be split in to modules.