GNU/Linux >> Tutoriales Linux >  >> Linux

¿Se puede ejecutar docker dentro de un contenedor de Linux?

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:

  1. Asegúrate de tener lxc.aa_profile = lxc-container-default-with-nesting (si no funciona o no tienes este perfil, prueba lxc.aa_profile = unconfined ) en el config archivo de su LXC para asegurarse de que no será bloqueado por apparmor . Para obtener más información, visite (o modifique) los archivos en /etc/apparmor.d/lxc .

  2. Necesita instalar lxc en su contenedor. Si está bajo ubuntu, por ejemplo, ejecute en el contenedor apt-get install lxc .

  3. Asegúrese de que se llame al demonio docker con el --exec-driver=lxc parámetro. Puede probarlo antes emitiendo manualmente docker -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:

  1. La bandera --privileged se necesita en el contenedor exterior para lograr eso.
  2. DEBES usar -v /var/lib/docker para evitar la limitación mencionada por crack.
  3. ln -s /usr/bin/docker.io /usr/local/bin/docker simplemente está creando un enlace simbólico para que podamos escribir docker en lugar de docker.io

Linux
  1. Cómo instalar y configurar Docker Container en Rocky Linux 8

  2. ¿Cómo puedo obtener información del contenedor de Docker Linux desde el propio contenedor?

  3. ¿Qué hay dentro de una imagen/contenedor de Docker?

  4. Cómo ejecutar un trabajo cron dentro de un contenedor docker

  5. Entorno Linux ligero y aislado

Cómo ejecutar Nginx en un contenedor Docker:una guía paso a paso

Ejecute el contenedor Docker de Almalinux o Rocky Linux 8 con Systemd (systemctl)

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo ejecutar Grafana en un contenedor Docker

Cómo ejecutar contenedores Docker

No se puede leer el certificado cuando se ejecuta en el contenedor Docker de Linux:funciona en Windows