Hacker News new | ask | show | jobs
by binarycrusader 4094 days ago
You forgot the part where Solaris did containers first in 2005.

Others "realised" the value of this later and started improving upon the ideas contained within.

Although I'm sure many might argue that this is the natural conclusion of virtualization.

5 comments

And where FreeBSD did jails in 2000 (or actually a bit earlier).

https://www.freebsd.org/releases/4.0R/notes.html

Yes, everyone refers to jails, but I think most people would agree that jails weren't really containers. They didn't provide true isolation for a set of applications. I guess you could argue they were the original prototype for them though.

Solaris containers are the first "lightweight virtualization" technology that I'm personally aware of that provided true isolation of one more processes from the host operating system and host processes.

Not sure if "lightweight" counts when talking about a mainframe, but when first encountering Solaris zones they seemed equivalent to LPAR's in the mainframe world.

http://en.wikipedia.org/wiki/VM_%28operating_system%29

There are a lot of things from the mainframe world that are being newly "discovered" that seem quite mundane to the greybeards...

http://en.wikipedia.org/wiki/IBM_System_z#Comparison_to_othe...

Yes, there are LPARs, but we were discussing software-based virtualisation. LPARs are more partitioning than virtualization which is very different from a multi-tenancy perspective.

The equivalent to LPARs in the Solaris world would be LDOMs on SPARC.

"Yes, everyone refers to jails, but I think most people would agree that jails weren't really containers. They didn't provide true isolation for a set of applications. I guess you could argue they were the original prototype for them though."

The first VPS provider (JohnCompanies, 2001) was based entirely on jail and it absolutely provided (even then) true isolation for a set of applications.

Every customer had their own unix root and their own rc.conf configured their own system and everyone ran their own sendmail/named/httpd/etc.

It is absolutely correct to refer to jails in this way, and that is why you see everyone doing it.

If you're talking about chroot jails, no, it was possible to "escape" jails they did not provide true isolation.

If you're talking about some other jail, possibly, but my understanding is they didn't actually provide true isolation. Certainly not a kernel-level of abstraction.

Good point. The idea of containerization has existed for a long time. A widespread implementation of it has not. The levels of abstraction are "idea of containerization" -> kernel implementation -> userspace tools. LXC, Solaris Containers, BSD jails all exist at kernel level of abstraction. Docker, Rocket, lxc-tools exist at userspace level of abstraction.

For any component at a given level of abstraction to gain widspread adoption, it needs to beat its competitors. Linux kernel needed to beat FreeBSD and Solaris. That's why I started the story with "linux kernel gains mainstream adoption." Consolidation at the kernel abstraction level is complete. Linux won. Now it's time for consolidation in the userspace abstraction level.

Solaris containers are no longer just a kernel level of abstraction though. As of Solaris 11.2 they're also capable of providing a near-system-level of abstraction via "Kernel Zones":

http://docs.oracle.com/cd/E36784_01/html/E37629/

These allow virtualization of multiple, independent instances of the operating system each with their own version of the kernel and processes. It is not the same as running multiple instances of VMWare, etc. since it is specifically designed to handle virtual Solaris instances:

https://blogs.oracle.com/zoneszone/entry/install_a_kernel_zo...

Windows NT had them since 2000: https://www.microsoft.com/msj/0399/jobkernelobj/jobkernelobj... They are called Job Objects in NT, as opposed to Namespaces or Zones in other kernels.
You forgot the part where FreeBSD 4.0 added jails in March 2000 [1].

You could argue that jails were inspired by chroot(), and that's correct, but that's hardly any isolation.

[1] http://phk.freebsd.dk/pubs/sane2000-jail.pdf

"You forgot the part where Solaris did containers first in 2005."

FreeBSD jail in 2000.