I’ve researched these dates several times now over the years, in preparation for several talks. So I’m posting it here for my own future reference.
There are some… “interesting” claims and posts out there about the history of containers. In fact, the order appears to be:
- The Virtuozzo product development (or at least idea) started in 1999). Initial release was in 2002.
- FreeBSD Jails were described in SANE paper in 2000. They were first available in the 4.0 FreeBSD release in March 2000. (I implemented jails as an Linux LSM in 2004, but this was – rightly – deemed an abuse of the LSM infrastructure). I’m not sure when development started on them (which would be the fairer comparison to what I listed as #1). I do know they were not started by Daniel in 1996 🙂 despite some online claims which I won’t link here.
- The first public open source implementation for linux was linux-vserver, announced on the linux-kernel mailing list in 2001.
After this we have the following sequence of events:
- Columbia university had a project called ZAP which placed processes into “Process Domains (PODS)” which are like containers. This paper is from 2002. This likely means PODS were in development for
some time before that, but they also were never considered for “real” upstream use. - According to wikipedia, Solaris Zones were first released in 2004.
- Meiosys had a container-like feature which was specifically geared toward being able to checkpoint and restart applications. Theirs worked on linux, AIX, and Solaris. (I believe WPARS were based on this work)
- In 2005 I was asked to work on getting this functionality upstream. Luckily I had a great team. After reviewing the viability of upstreaming any of the existing implementations, we decided we’d have to start from scratch. Our first straw-man proposal was here. This really was intended as a straw man to start discussion, as we knew there would be great ideas in response to this, including this one by Eric. And of course there was also some resistance.
From here it would seem appropriate to credit some of the awesome people who did much of the implementation of the various features. I keep starting lists of names, but if I list some, then I’ll miss some and feel bad. So I won’t. If you want to know about a specific feature, you can look at the git log and lkml archives.
Pingback: Serge Hallyn: History of containers | Linux Hub
Cool, we should keep updating this list and then extend it into a proper article. 🙂
Yeah I was thinking of doing a followup about the sequence of container drivers (i.e. mainly userspace).
Excellent, I was just talking to the Virtuozzo guys and they thought it is a good idea as well. 🙂
I can give some input on that, too, as I was leading vzctl development from about 2002, and vzpkg tools from 2004, etc etc
Hi Serge, here is a fact to back up OpenVZ’s interesting claim. The prototype of Virtuozzo, called ASPcomplete at the time, was released in August 2000 by SWsoft (later known as Parallels and now Virtuozzo). It was decided to not keep it open source (which was a big mistake), but the first release was made, here is copy of their ftp: http://www.paul.sladen.org/vserver/aspcomplete/2000-08-25/RELEASE-NOTES.txt. By the way, you can see Denis Lunev name in there, and he’s currently Virtuozzo kernel team leader.
Also, I was working for SWsoft since November 2000, on a different project initially, but sitting in the same semi-open space as Virtuozzo developers. Their head at the time was Alexander Tormasov, so later I asked him for when they actually started and he gave me the quote I referred to. I can attest he has no reason to lie.
Please feel free to contact me if you have any questions.
That’s awesome – thanks! I’ll add the link to the main post.
Cool, I was talking to Andrew Vagin about this yesterday and asked him to provide some input. He told me that you’d be the right person to talk to. 🙂
What is the definition of a container ? Should the history not start with something like the Virtual Address Space , or Users/Groups ?
For a book, maybe, but that does not fit with the goal of this post.