--
David Fabian
Cluster Design, s.r.o.
Dne Čt 3. července 2014 23:17:12, Pavel Emelyanov napsal(a):
> On 07/03/2014 03:49 PM, Bosson VZ wrote:
> > Fair enough. We have no problem to adapt to the new process. I don't know how libcontainer is designed
> > internally and how low-level it is but having a thin user-space wrapper around the vzkernel would be wonderful.
>
> Here's the preliminary version of it will look like: https://github.com/xemul/libct/
> The API would get slightly shuffled to fit more the https://github.com/docker/libcontainer/pull/28
>
>
> > I wanted to use libvzctl in bossonvz to abstract the driver away from the low-level stuff but the library
> > is just too much interconnected with the veconf parser.
>
> Well, the libcontainer API is not going to mess with configs at all. Everything
> will be run-time.
>
> > The current vz kernel API is not the nicest thing to work with to be honest and a shared user-space library
> > would help both vzctl and bossonvz. If you are interested in my POV on the kernel API, I would say you
> > should leave more work for the user-space. At the moment, when the user-space asks for a new container,
> > the vzkernel magically creates a new environment and sets everything (esp. cgroups) by itself without any
> > chance for the user-space to set anything. Because libvirt has its own cgroup hierarchy model and any
> > libvirt driver should honor it, bossonvz should, idealy, create cgroups for the container under the libvirt
> > hierarchy but it cannot since the kernel won't let it.
>
> Yes, this is our 15-years-old API that was kept compatible with tools. Soon after
> we started merging containers upstream we started the process of its deprecation,
> and in the upcoming Rhel7-based kernel we're very close to the goal.
>
> > As I see it, the driver has to do two separate things to successfully use the kernel API. There are the
> > vz specific syscalls/ioctls (e.g. VZCTL_ENV_CREATE_DATA) and there is a preparatory work done in the
> > user-space (preparing forked sub-processes, pipes, etc.). Is the new SDK going to cover only the low-level
> > code (ioctls) or will I be able to use some sort of a high-level function like spawn_environment() and get
> > PID of the newly created container's init?
>
> The SDK is going to be quite high-level, and more sophisticated than existing libvzctl.
> The libcontainer is going to be low-level but still more abstract than the kernel API.
>
> > The amount of vz specific code in the bossonvz driver is not that big. The ioctls is just a single
> > bossonvz_environment.c file. The harder part is the preparatory part which is located in bossonvz_container.c
> > and is quite complex since it closely mimics the code path of vzctl (otherwise the driver would not work).
>
> It's interesting. Can you point out where you code is?
> And, btw, I think you would be interested in taking part in libcontainer
> design, discussions and development. The link above is the place where we
> try to settle down the new API and you're welcome to join :)
>
> Thanks,
> Pavel
>
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list