sloopstash

What is the difference between OS images used in VM and the OS images used for containers?

As per my understanding, the key difference between VM and containers is that VM will have a guest OS which will be hosted on a host machine while containers are light-weight which shares the host machine's kernel with the help of container runtime, say docker. 

When we build a VM, we will be using a guest OS which has its own kernel and hosted on a physical machine. The guest OS will communicate with the host OS through hypervisor and shares its resources like memory, storage, etc.,

But in case of containers, why are we using the different OS images similar to VM when containers are said to provide abstraction from the host OS? Does the container OS images has its own kernel? If it doesn't, how container runtime communicates with host OS?