¿Los contenedores Docker tienen su propio kernel o no?

¿Los contenedores Docker tienen su propio kernel o no?

Veo que muchas imágenes de Docker en el repositorio de Docker están creadas con una base de Ubuntu.

¿Qué significa eso? ¿Cada contenedor incluye una versión simplificada del kernel de Linux?

¿Los contenedores se asientan encima de sus propios granos? Pero pensé que los contenedores comparten el kernel del host (que en algunos casos es boot2docker, una compilación personalizada de Tiny Core Linux y, en otros, algo como CoreOS).

EDITAR:Aclarando un poco la pregunta. Sí, sé que Docker es un contenedor de procesos, no una máquina virtual completa. Pero dado que hay contenedores "Ubuntu" en el registro oficial de Docker Hub y otros sistemas operativos como CentOS, ¿qué significa ejecutar Ubuntu en un contenedor?

Respuesta:Ahh me acaba de dar cuenta. Son los procesos terrestres del usuario de Ubuntu, que contienen apt-get y otros procesos de configuración para una compilación particular de Ubuntu. Lo mismo ocurre con CentOS. Docker no es un proceso único, solo una entrada. Entonces, para estas distribuciones, el punto de entrada es algún tipo de proceso de inicio que genera otros procesos.

Respuesta1

Docker utiliza el kernel del sistema operativo host, no hay ningún kernel personalizado o adicional dentro del contenedor. Todos los contenedores que se ejecutan en una máquina comparten este kernel "host".

Wikipedia dicehttp://en.wikipedia.org/wiki/Docker_(software)eso

Docker utiliza funciones de aislamiento de recursos del kernel de Linux, como cgroups y espacios de nombres del kernel, para permitir que se ejecuten "contenedores" independientes dentro de una única instancia de Linux, evitando la sobrecarga de iniciar máquinas virtuales.

cgroups, espacios de nombres y LXC son características del kernel de Linux para aislar grupos de procesos; Todavía hay un único núcleo, un único programador y una instancia del administrador de memoria del núcleo.

Boot2docker y CoreOS son simplemente distribuciones ligeras de Linux con algún kernel host; se pueden utilizar para cargar contenedores Docker.

http://boot2docker.io/

boot2docker es una distribución de Linux liviana basada en Tiny Core Linux creada específicamente para ejecutar contenedores Docker. Se ejecuta completamente desde RAM, pesa ~27 MB y arranca en ~5 s (YMMV).

http://en.wikipedia.org/wiki/CoreOS

Un único host de control (instancia de CoreOS) ejecuta múltiples sistemas Linux aislados (contenedores), utilizando Docker como una capa adicional de abstracción e interfaz[14] para las funciones de virtualización subyacentes a nivel del sistema operativo del kernel de Linux. ... Este enfoque se basa en la funcionalidad cgroups del kernel de Linux, que proporciona aislamiento del espacio de nombres y capacidades para limitar, contabilizar y aislar el uso de recursos (CPU, memoria, E/S de disco, etc.) para las colecciones de procesos.

Respuesta2

En casi todos los casos, se comparte el kernel del sistema operativo host. Para ejecutar un kernel diferente, necesita utilizar la virtualización. Esto es poco común y solo se usa cuando es necesario debido a la degradación del rendimiento.

"El contenedor Docker Engine comprende solo la aplicación y sus dependencias. Se ejecuta como un proceso aislado en el espacio de usuario del sistema operativo host, compartiendo el kernel con otros contenedores. Por lo tanto, disfruta de los beneficios de asignación y aislamiento de recursos de las máquinas virtuales, pero es mucho más portátil y eficiente."

Esto podría ayudar a explicar cómo funciona: ingrese la descripción de la imagen aquí

Fuente:https://www.docker.com/whatisdocker/

Respuesta3

Todos los contenedores acoplables utilizan el kernel host.

También significaría que alguna incompatibilidad entre el kernel del host y la distribución del contenedor podría causar problemas. En teoria. Por ejemplo, si un software en contenedor quisiera utilizar alguna característica del kernel que no fue compilada en el kernel host, entonces no funcionaría.

La práctica es que esto no sucede. La principal fuente de problemas de los contenedores de la ventana acoplable son las limitaciones (a menudo inexplicables) de la propia ventana acoplable, y no alguna incompatibilidad del kernel huésped-host.

(Ps. Es porque prácticamente todas las distribuciones de Linux funcionan con cualquier kernel de Linux).

información relacionada