1. Security / Attack‑Surface Reduction
Unikernels aim to shrink the trusted code base by removing the general‑purpose OS.
“The operating system itself is literally the problem as it's inherently meant to run many different programs whereas unikernels only run one.” – eyberg
2. Debugging, Observability & Development Complexity
Stripping away the OS loses familiar tooling and makes fault isolation harder.
“An application overflow now corrupts part of the network stack… The reduced attack service is cool but not at the expense of my visibility and liveness of the system.” – vsgherzi
“With a unikernel, the [observability] surface is much smaller… Tools such asstrace, eBPF,lsof,ss, etc. have tremendous value.” – scottlamb
3. Library Reuse & Hypervisor Dependence
Unikernels still rely on vetted libraries and the hypervisor for hardware access; they shift, not eliminate, shared code.
“You pull them from reviewed and maintained library code from a repository… The point that makes this different from an OS is that there's no shared service, no syscalls to do that stuff -- just subroutine calls…” – cmrdporcupine
“Maybe a good halfway point is to still have a unikernel but the libraries for common stuff like networking or fs are already written according to a standard and plug and play…” – terabytest