¿Cómo puede Docker ejecutar distros con diferentes núcleos?

¿Cómo se puede ejecutar Docker en un host Debian tal vez un OpenSUSE en un contenedor? Utiliza kernel diferente, con modules separados. También las versiones anteriores de Debian han usado kernels más antiguos, entonces, ¿cómo se puede ejecutar en una versión kernel 3.10+? Los kernels más antiguos solo tienen funciones integradas más antiguas, ¿cómo puede una antigua distribución gestionar nuevas características? ¿Cuál es "el truco" en eso?

¿Cómo se puede ejecutar Docker en un host Debian tal vez un OpenSUSE en un contenedor?

Debido a que el núcleo es el mismo y será compatible con el motor Docker para ejecutar todas esas imágenes de contenedor: el núcleo del host debe ser 3.10 o más, pero su list de llamadas al sistema es bastante estable.

Consulte " Diseñar contenedores: por qué entender el espacio de usuario frente al espacio de kernel ".

  1. Las aplicaciones contienen lógica comercial, pero dependen de las llamadas al sistema.
  2. Una vez que se comstack una aplicación, el set de llamadas al sistema que utiliza una aplicación (es decir, que se basa) se integra en el binary (en los lenguajes de nivel superior, este es el intérprete o JVM).
  3. Los contenedores no resumen la necesidad del espacio del usuario y el espacio del núcleo para compartir un set común de llamadas al sistema.
  4. En un mundo en contenedor, este espacio de usuario se incluye y envía a diferentes hosts, que van desde computadoras portátiles hasta serveres de producción.
  5. En los próximos años, esto creará desafíos.

https://rhelblog.files.wordpress.com/2015/07/user-space-vs-kernel-space-simple-container.png?w=584&h=231

De tanto en tanto, se agregan nuevas llamadas al sistema y las llamadas al sistema anterior quedan obsoletas; esto debe tenerse en count al pensar en el ciclo de vida de su infraestructura de contenedores y las aplicaciones que se ejecutarán dentro de ella.

Consulte también " ¿Por qué la versión del kernel no coincide con la versión de Ubuntu en un contenedor Docker? ":

No hay núcleo dentro de un contenedor. Incluso si instala un núcleo, no se cargará cuando se inicie el contenedor. El objective de un contenedor es aislar processs sin la necesidad de ejecutar un kernel nuevo.