Why do we need Docker, virtualization technologies?
Because popular kernels are bulky, badly designed and don't provide the virtualization facilities we need.
I think a proper OS kernel should at least have these properties:
1) An OS kernel must not have any driver code for external devices. External devices should describe themselves.
2) An OS kernel source code line count must be in thousands, not millions. Only absolutely necessary code should be there. (isolation, protection...)
3) An OS kernel must provide its isolation, protection, resource management etc. source code as reusable libraries for user-level applications.