<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You'll need to coordinate between the container and the host to create<br>
the devices.  This is something I do want to think about, but have not<br>
yet had time to do so.  It may involve updating Docker to use a service,<br>
when available, to request devices be created.  This could be a dbus<br>
service which gets (vetted and) passed through to the host.<br></blockquote><div><br></div><div>So running docker on an unprivileged container is definitely something not possible with the current version of docker at least right? I've never really used LXC in production and I'm working on a migration from OpenVZ to LXC. So I'm really new to LXC as well as Docker. Anyway I could help you out to add support for docker? We may have to change the way the docker containers are started using the lxc driver. I filed an <a href="https://github.com/docker/docker/issues/13806">issue on docker</a> but haven't heard back from them yet.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Quoting Akshay Karle (<a href="mailto:akshay.a.karle@gmail.com" target="_blank">akshay.a.karle@gmail.com</a>):<br>
> Hello,<br>
><br>
> I'm currently working on a project that requires to run docker containers<br>
> inside unprivileged LXC containers. I've managed to run unprivileged<br>
> containers on an Ubuntu 14.04 host. I've also managed to get the docker<br>
> daemon running using the LXC driver instead of native docker exec driver.<br>
> Right now I'm stuck when trying to start a docker container as it attempts<br>
> to create special devices which fails as it doesn't have the permissions to<br>
> do so in the unprivileged container.<br>
><br>
> root@u1:/# sudo docker run hello-world<br>
> INFO[0006] POST /v1.18/containers/create<br>
> INFO[0006] +job create()<br>
> INFO[0006] +job log(create,<br>
> a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335,<br>
> hello-world:latest)<br>
> INFO[0006] -job log(create,<br>
> a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335,<br>
> hello-world:latest) = OK (0)<br>
> INFO[0006] -job create() = OK (0)<br>
> INFO[0006] POST<br>
> /v1.18/containers/a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335/attach?stderr=1&stdout=1&stream=1<br>
> INFO[0006] +job<br>
> container_inspect(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> INFO[0006] -job<br>
> container_inspect(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> = OK (0)<br>
> INFO[0006] +job<br>
> attach(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> INFO[0006] POST<br>
> /v1.18/containers/a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335/start<br>
> INFO[0006] +job<br>
> start(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> INFO[0006] +job<br>
> allocate_interface(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> INFO[0006] -job<br>
> allocate_interface(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> = OK (0)<br>
> INFO[0006] +job log(start,<br>
> a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335,<br>
> hello-world:latest)<br>
> INFO[0006] -job log(start,<br>
> a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335,<br>
> hello-world:latest) = OK (0)<br>
> INFO[0006] -job<br>
> attach(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335) =<br>
> OK (0)<br>
> INFO[0006] +job<br>
> release_interface(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> INFO[0006] -job<br>
> release_interface(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> = OK (0)<br>
> INFO[0006] +job<br>
> release_interface(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> INFO[0006] -job<br>
> release_interface(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335)<br>
> = OK (0)<br>
> INFO[0006] +job log(die,<br>
> a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335,<br>
> hello-world:latest)<br>
> INFO[0006] -job log(die,<br>
> a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335,<br>
> hello-world:latest) = OK (0)<br>
> Cannot start container<br>
> a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335: mknod<br>
> /dev/fuse operation not permitted<br>
> INFO[0006] -job<br>
> start(a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335) =<br>
> ERR (1)<br>
> ERRO[0006] Handler for POST /containers/{name:.*}/start returned error:<br>
> Cannot start container<br>
> a4b9f1286eca35e5f6afc62aad466dfa80061086ccf309171941eb70e88a8335: mknod<br>
> /dev/fuse operation not permitted<br>
><br>
> # uname -a<br>
> Linux u1 3.13.0-53-generic #89-Ubuntu SMP Wed May 20 10:34:39 UTC 2015<br>
> x86_64 x86_64 x86_64 GNU/Linux<br>
><br>
> Unprivileged container config:<br>
> # Template used to create this container:<br>
> /usr/share/lxc/templates/lxc-download<br>
> # Parameters passed to the template: -d ubuntu -r trusty -a amd64<br>
> # For additional config options, please look at lxc.container.conf(5)<br>
><br>
> # Distribution configuration<br>
> lxc.include = /usr/share/lxc/config/ubuntu.common.conf<br>
> lxc.include = /usr/share/lxc/config/ubuntu.userns.conf<br>
> lxc.arch = x86_64<br>
><br>
> LXC version on the host and container: 1.0.7<br>
><br>
> # Container specific configuration<br>
> lxc.mount.auto = cgroup<br>
> lxc.aa_profile = unconfined<br>
> lxc.id_map = u 0 100000 65536<br>
> lxc.id_map = g 0 100000 65536<br>
> lxc.rootfs = /home/vagrant/.local/share/lxc/u1/rootfs<br>
> lxc.utsname = u1<br>
><br>
> # Network configuration<br>
> lxc.network.type = veth<br>
> lxc.network.flags = up<br>
> lxc.network.link = lxcbr0<br>
> lxc.network.hwaddr = 00:16:3e:53:e6:a2<br>
><br>
> Has anyone had any success in doing this? Any ideas if this is even<br>
> possible?<br>
<br>
> _______________________________________________<br>
> lxc-users mailing list<br>
> <a href="mailto:lxc-users@lists.linuxcontainers.org" target="_blank">lxc-users@lists.linuxcontainers.org</a><br>
> <a href="http://lists.linuxcontainers.org/listinfo/lxc-users" rel="noreferrer" target="_blank">http://lists.linuxcontainers.org/listinfo/lxc-users</a><br>
<br>
_______________________________________________<br>
lxc-users mailing list<br>
<a href="mailto:lxc-users@lists.linuxcontainers.org" target="_blank">lxc-users@lists.linuxcontainers.org</a><br>
<a href="http://lists.linuxcontainers.org/listinfo/lxc-users" rel="noreferrer" target="_blank">http://lists.linuxcontainers.org/listinfo/lxc-users</a></blockquote></div></div>