Last week me and Kirill Korotaev visited Ottawa to take part in Linux Kernel Summit and Linux Symposium. It was our first time on these events, so we were in a good mood despite the 16 hours flight from Moscow to Ottawa, and the 8 hours timezone change. We went to those event mostly to discuss containers and their integration into mainstream.
Containers (VEs, VPSs), or kernel-level virtualization technology (implemented in OpenVZ), were discussed very widely during both events. The topic was presented by three parties:
The overall feeling among the kernel people is: containers are a good feature to have in Linux kernel, let’s merge it into mainstream. But since several different implementations of the technology are available, and several groups are working on those, the mainstream code should be a result of consensus between all those implementations.
So, let me describe what are all those groups are aiming for:
So, from the first glance it’s really hard to find a consensus. Say, Eric’s approach of having a distinct namespaces faces the fact that all the namespaces are heavily interdependent -- for example, processes belongs to user, so process namespace depend on user namespace, and you can hardly find a namespace which can be independent on all the others.
IBM’s application containers are closer to reality, and actually they might be a first step towards a full containers implementation in mainstream. How hard is to move from app. containers to system containers is not yet clear at this point though -- for example, if we do not care about /proc virtualization from the beginning, it might be real pain to add it later. From the other hand, IBM might be quite happy with full containers since they do all they want.
To conclude — this is not going to be an easy task, but it’s doable, and the thing that we met in person and discussed all that stuff, and that all the other kernel developers are all for us helps a lot. Sooner or later, we will be there.