Sí, es posible. Sin embargo, no puede tener una partición aufs anidada dentro de aufs. Debe montar otro sistema o usar un backend de almacenamiento diferente.
Puede echar un vistazo al archivo MAKE de la ventana acoplable y hack/dind
. Necesitas el modo privilegiado para hacerlo.
La forma más fácil de intentarlo es hacer make shell
y una vez en el contenedor, puede iniciar un nuevo demonio docker :)
EDITAR:probé Koding y, de hecho, no es posible. No tiene privilegios dentro de su contenedor, por lo que no puede iniciar una ventana acoplable nueva.
Sí, Docker puede ejecutarse en un contenedor de Linux.
Pero la ventana acoplable solo se ejecutará con lxc
controlador de ejecución y en un no confinado lxc.
Entonces, aquí le mostramos cómo obtener la ventana acoplable en LXC:
-
Asegúrate de tener
lxc.aa_profile = lxc-container-default-with-nesting
(si no funciona o no tienes este perfil, pruebalxc.aa_profile = unconfined
) en elconfig
archivo de su LXC para asegurarse de que no será bloqueado porapparmor
. Para obtener más información, visite (o modifique) los archivos en/etc/apparmor.d/lxc
. -
Necesita instalar lxc en su contenedor. Si está bajo ubuntu, por ejemplo, ejecute en el contenedor
apt-get install lxc
. -
Asegúrese de que se llame al demonio docker con el
--exec-driver=lxc
parámetro. Puede probarlo antes emitiendo manualmentedocker -d --exec-driver=lxc
. En ubuntu, para que el argumento se use al inicio, simplemente edite/etc/default/docker
y asegúrese de tener la línea:
DOCKER_OPTS="--exec-driver=lxc"
Siga este hilo para obtener actualizaciones:https://github.com/docker/docker/issues/6783
Si necesita solucionar problemas:
- esté atento a
apparmor
inicia sesión en los registros de interletraje del host. - lanzar
docker -d ...
manualmente para obtener resultados.
Nota:es posible que no tenga la mano en el host para modificar el script de apariencia LXC en Koding al juzgar las respuestas de otros, de todos modos, este procedimiento sigue siendo de interés si usted es el proveedor de LXC, y responde a la pregunta más general que ha hecho en su el título de la pregunta y eso podría atraer a personas en escenarios más generales (como yo).
Y aquí hay una guía completa para cualquier otra persona en el mismo barco.
Inicie una terminal y comience a escribir..
docker run -i -t --privileged -v /var/lib/docker ubuntu bash
apt-get update && apt-get install -y docker.io
service docker.io start
ln -s /usr/bin/docker.io /usr/local/bin/docker
docker run -i -t ubuntu bash
Ahora deberías estar dentro de un contenedor dentro de otro contenedor.
Observaciones:
- La bandera
--privileged
se necesita en el contenedor exterior para lograr eso. - DEBES usar
-v /var/lib/docker
para evitar la limitación mencionada por crack. ln -s /usr/bin/docker.io /usr/local/bin/docker
simplemente está creando un enlace simbólico para que podamos escribirdocker
en lugar dedocker.io