[lxc-devel] devices and containers

Serge Hallyn serge.hallyn at ubuntu.com
Thu Nov 13 21:16:57 UTC 2014


Quoting Michael J Coss (michael.coss at alcatel-lucent.com):
> Sorry for the long delay in responding but we had a demo of our
> systems with outside analysts and it's been a long couple of weeks
> in preparing for the demo.  I'm looking forward to finding a set of
> common ground changes that could be pushed upstream to better
> support device use in containers.
> 
> So to clarify our approach, we are running unmodified Linux distro's
> with a full desktop environment in a container.  There are
> modifications to the host to be sure, but the container's themselves
> are straight out of the box distros.  Similar to Michael Warfield,
> we have created a private dev directory for each container in:
> 
> /etc/lxc/<container name>/dev
> 
> and use a local fstab to mount it on the containers /dev during lxc-start.
> 
> The key trick here was to force uevents to be processed only by the
> host first, and then forwarded to the appropriate container(s) based
> on system policy.  Our user space daemon, udevns, in addition to
> forwarding uevent messages, like udevd in older versions of
> Unix/Linux, actually manages the creation/deletion of device nodes
> in the container's /dev as it receives the uevents. The nodes are
> created, and the messages are forwarded to the specific
> container(s).  In addition, we specify what access is allowed to
> what devices in a given container via lxc.conf. Obviously udevns can
> create any device but we allow (and expect) for a container to run
> udevd and process uevents as it sees fit within the confines of the
> restrictions imposed in lxc.conf. Ideally, we should be adjusting
> the device restrictions on the fly to remove/add access in the
> container as these hotplug events occur but we don't do that at the
> moment.  So in our scenario, we start a container with a headless X
> session.  Adding the display and input devices (keyboard, and mouse)
> after startup.
> 
> Obviously sysfs is yet another can of worms.  Our solution is to run
> a FUSE and filter sysfs.  Right now the filter is a bit simplistic,
> in that it is only filtering 'uevent' files from view in the
> container.  More filter/modifying needs be added to make it more of
> a container's view of the system, and not the host's.
> 
> I have finally gotten approval to open source the code that
> implements our udevns, and the kernel changes to support that.  I
> will be preparing that over the next few weeks.  I'm still working
> on getting the sysfs FUSE opened.

Awesome - thanks, Michael.  Very much looking forward to seeing it.

-serge


More information about the lxc-devel mailing list