¿Cuál es la relación entre el sistema operativo host del acoplador y el sistema operativo de imagen base del contenedor?

122

No estoy seguro de que esté haciendo la pregunta correcta ... pero mientras he estado leyendo todo lo que Docker tengo en mis manos, veo que puedo instalar Docker en Ubuntu 12.04 (por ejemplo) y luego puedo instalar un contenedor de Fedora o una versión diferente de ubuntu? (hay un ejemplo donde el usuario instaló busybox en el contenedor).

Y, por supuesto, podría estar completamente equivocado.

Pero sería mi expectativa que hubiera una conexión efímera entre el sistema base y el contenedor.

reexpresado: ¿cuál es la relación entre el sistema operativo host y el sistema operativo de la imagen base del contenedor?

Ricardo
fuente

Respuestas:

100

Como mencionó BraveNewCurrency, la única relación entre el sistema operativo host y el contenedor es el Kernel.

Es una de las principales diferencias entre Docker y las máquinas virtuales 'normales', no hay gastos generales, todo se lleva a cabo directamente dentro del núcleo del host.

Es por eso que solo puede ejecutar distribución / binarios basados ​​en Linux dentro del contenedor. Si desea ejecutar otra cosa, no es imposible, pero necesitaría algún tipo de virtualización dentro del contenedor (qemu, kvm, etc.)

Docker gestiona imágenes que son la representación del sistema de archivos. Puede instalar cualquier distribución de Linux o simplemente poner binarios.

De hecho, para la conveniencia del ejemplo, a menudo confiamos en las imágenes base, pero también puede crear su imagen sin ninguna de las bibliotecas / binarios de distribución. De esa manera, tendría un contenedor realmente pequeño pero funcional.

Un punto más con respecto a las distribuciones: como el núcleo sigue siendo el núcleo del host, no tendrá ningún módulo / parche de núcleo específico proporcionado por la distribución.

crujir
fuente
2
entonces, si el sistema operativo host es Ubuntu, ¿el contenedor también será Ubuntu?
Richard
21
El kernel del contenedor será el de ubuntu, pero nada más. Puede ejecutar fácilmente centos, archlinux, debian o cualquier otra distribución basada en linux como contenedores.
chirrido
37
Aunque esta información se puede indicar directa / indirectamente en el sitio web de la ventana acoplable, realmente creo que deberían aclarar esto un poco. Me abrí camino a través de la página de inicio, la descripción general, el tutorial interactivo y la mayoría de los conocimientos básicos. A pesar de esto, estaba confundido sobre este tema, y ​​comenzaba a suponer que el mejor rendimiento de Docker (basado en los diagramas de arquitectura del sitio) requeriría una coincidencia en el sistema operativo host y contenedor. Soy nuevo en el concepto del "kernel de Linux", por lo que esto no fue inmediatamente obvio para mí. Saber esto al instante hace que Docker sea doblemente malo.
ctrlplusb
2
Docker es un proyecto bastante complejo que aprovecha las funciones avanzadas. En algún momento, asumimos que el usuario tiene algún conocimiento como la diferencia entre el sistema operativo y la distribución. Si cree que agregaría valor, la documentación es de código abierto y puede enviar una solicitud de extracción.
crujido
3
Esto parece indicar que solo las partes del espacio de usuario de un sistema operativo (bibliotecas, comandos, aplicaciones) se pueden contener en contenedores. Si la aplicación requiere una revisión diferente del kernel (por ejemplo, 3.10 vs. 4.9), entonces no podrá ejecutarse en un contenedor. ¿Está bien?
David C.
23

Literalmente, lo único que tienen en común es el núcleo. Todo su mundo (sistema de archivos) está en el contenedor acoplable.

ValienteNuevoMoneda
fuente
1

Hay otra consideración: incluso si los dos núcleos son iguales, existe un problema si el sistema operativo host no admite Docker, como RHEL 6: https://access.redhat.com/solutions/1378023

Por lo tanto, no podrá girar un contenedor en RHEL 6, incluso si la imagen es de Linux.

flujo2k
fuente