Recientemente comencé a aprender Docker y parece que la mayor parte del trabajo pesado lo realiza el kernel de Linux, utilizando espacios de nombres y cgroups.
Algunas cosas que encuentro confusas son:
¿Cuál es la diferencia entre un espacio de nombres y un cgroup? ¿Cuáles son los diferentes casos de uso que abordan?
¿Qué ha implementado Docker además de esto para ganar popularidad?
Me gustaría conocer los aspectos internos de estas funciones y cómo se implementan.
Respuestas:
Los enlaces adecuados para esas dos nociones se han corregido en PR 14307 :
Con:
En breve:
Vea más en " Anatomía de un contenedor: espacios de nombres, cgroups y algo de magia del sistema de archivos " por Jérôme Petazzoni .
Los grupos C implican la medición y limitación de recursos:
Los espacios de nombres proporcionan a los procesos su propia vista del sistema
Múltiples espacios de nombres:
(la reasignación por instancia de demonio de la raíz del contenedor a un usuario sin privilegios está en progreso: PR 12648 : ver su diseño )
fuente
chroot
basa en algún espacio de nombres? ¿Puedechroot
ser reemplazado por algún espacio de nombres?chroot
ser reemplazado por algún espacio de nombres?pivot_root
? ( unix.stackexchange.com/a/456777/7490 ) Consulte también github.com/vincentbernat/jchrootcgroups limita los recursos que un proceso o conjunto de procesos puede usar, estos recursos pueden ser CPU, memoria, E / S de red o acceso al sistema de archivos, mientras que el espacio de nombres restringe la visibilidad del grupo de procesos al resto del sistema.
visite para obtener más detalles Cómo los grupos C y los espacios de nombres del kernel de Linux hicieron posibles los contenedores modernos
fuente
Cgroups (grupos de control) gestiona los recursos.
Determina la cantidad de recursos de la máquina host que se darán a los contenedores.
por ejemplo: - definimos recursos en el archivo yaml docker-compose para crear servicios como:
Aquí, en este ejemplo, pedimos explícitamente a cgroups que asigne estos recursos a un contenedor en particular.
Espacios de nombres : proporciona aislamiento de procesos, aislamiento completo de contenedores, sistema de archivos separado.
Hay 6 tipos de espacios de nombres:
1. mount ns: para el sistema de archivos.
2. UTS (tiempo compartido único) ns: comprueba los diferentes nombres de host de los contenedores en ejecución
3. IPC ns: comunicación entre procesos
4. Network ns: se encarga de la asignación de IP diferente a diferentes contenedores
5. PID ns: aislamiento de id de proceso
6. usuario ns- nombre de usuario diferente (uid)
fuente