4 ms·
This isn't nitpicking at all, it's an important distinction! Docker is not virtualization, it's just an abstraction that makes some Linux process isolation fea
by JeremyNT 6y ago
This isn't nitpicking at all, it's an important distinction!
Docker is not virtualization, it's just an abstraction that makes some Linux process isolation features easier to manage.
It also allows you to bundle whatever dependencies you have in the same bundle, but that is not the same as having a VM.
- cyphar 6y agoLinux containers and equivalent technologies are virtualisation (specifically OS virtualisation[1]), just not a VM. Hardware virtualisation (VMs) isn't the only kind of virtualisation that exists. [1]: https://en.wikipedia.org/wiki/Operating_system-level_virtualization https://en.wikipedia.org/wiki/Operating_system-level_virtual...
- cameronh90 6y agoBy that logic, processes are arguably virtualisation too. They do after all use virtual memory. Threads, processes and containers exist on a continuum.
- __jem 6y agoThe key is that "containers" don't actually exist -- they're just processes running under a variety of different namespaces.
- MaxBarraclough 6y agoIt's true that Docker isn't a first-class abstraction at the level of the Linux kernel, but BSD has jails, and Solaris has Zones. This is important in some respects, but I don't see that it informs things here. Containers are still 'a thing' regardless of how they're implemented.
- __jem 6y agoCurious to learn more about how jails + zones are implemented. In Linux land, I find the notion that containers are a coherent abstraction really hinders developers from understanding how their application is deployed.
- strlen 6y agoIndeed they are! The notion that each process has its separate address space is called virtual memory for that reason. See also cgroups: while this feature is used by the container run times, it predates Docker, and can be used standalone with normal processes.
- cameronh90 6y agoIndeed. I made a website for testing npm packages inside a cgroup/unshared "container" - about 6 months before docker came out. If only I had realised that could have been useful for more than testing npm packages...
- Spivak 6y agoOCI “docker” containers are at this point are a description of a process. How it’s realized is up to the implementor. runc realizes the container with kernel namespaceing and runv realizes the container with hardware virtualization. Both if implemented to spec will be logically equivalent and drop-in replacements for one another.