linux docker chroot

linux - Chroot vs Docker



(1)

Docker permite aislar un proceso en múltiples niveles a través de espacios de nombres:

  • mnt namespace proporciona un sistema de archivos raíz (este puede ser comparado con chroot, supongo)
  • espacio de nombres pid para que el proceso solo se vea a si mismo y sus hijos
  • espacio de nombres de red que permite que el contenedor tenga su pila de red dedicada
  • espacio de nombres de usuario (bastante nuevo) que permite asignar un usuario no root en un host con el usuario root dentro del contenedor
  • uts proporciona un nombre de host dedicado
  • ipc proporciona memoria compartida dedicada

Todo esto añade más aislamiento que el que proporciona chroot.

Estoy tratando de aprender lo básico sobre los contenedores (Docker en este caso). Por lo que he aprendido del documento de Docker y varias lecturas, Docker básicamente proporciona aislamiento al ejecutar el contenedor utilizando runc (anteriormente usando LXC ). De cualquier manera, usa el mismo kernel que la máquina host. Por lo tanto, la imagen del contenedor debe ser compatible con el núcleo del host. Encuentro esto muy similar a lo que hace un chroot . ¿Podría alguien explicarme alguna diferencia y / o ventajas en el uso de Docker en lugar de chroot? (además de los extras proporcionados por Docker como empaque, docker-hub, y todas las buenas características proporcionadas por Docker)