Introducción a los conceptos básicos de Docker

Tabla de contenido

I. Introducción

2. Introducción a la virtualización

1. El concepto de virtualización

2. El concepto de acoplamiento y desacoplamiento

2.1 Acoplamiento

2.2 Acoplamiento

2.3 Desacoplamiento

3. Virtualización

4. Principio de funcionamiento de la virtualización

5. Dos componentes básicos

5.1, QEMU

5.2,KVM

6. Tipo de virtualización

3. Descripción general de la ventana acoplable

1. ¿Qué es Docker?

2. ¿Por qué pasar de servidores tradicionales a virtualización?

3. Características de la ventana acoplable

4. Contenedor Docker VS KVM

4.1, KVM:

4.2 Contenedor Docker:

4.3 Diferencias

 5. Los tres componentes principales de Docker

6. La lógica de ejecución del contenedor Docker

7. Espacio de nombres Docker

8. Grupo de control—cgroups (Grupos de control)


I. Introducción

El sistema operativo Linux tendrá un proceso principal que genera otros procesos para controlar diferentes servicios.

2. Introducción a la virtualización

       La virtualización permite que varias máquinas virtuales se ejecuten en un servidor físico. Las máquinas virtuales comparten la CPU, la memoria y los recursos de hardware de E/S de la máquina física, pero las máquinas virtuales están lógicamente aisladas entre sí. La virtualización ejecuta varias computadoras lógicas en una computadora al mismo tiempo. Cada computadora lógica puede ejecutar un sistema operativo diferente y las aplicaciones pueden ejecutarse en espacios independientes sin afectarse entre sí, lo que mejora significativamente la eficiencia del trabajo de la computadora.

       Actualmente, las principales tecnologías de virtualización incluyen código abierto XEN, KVM, ESXi de VMware y Hyper-V de Microsoft.

1. El concepto de virtualización

Desacople las aplicaciones y los recursos del kernel del sistema y aíslelos a nivel del sistema operativo para mejorar la utilización de los recursos

2. El concepto de acoplamiento y desacoplamiento

2.1 Acoplamiento

       El acoplamiento también se denomina enlace entre bloques. Se refiere a una medida del grado de interrelación entre módulos en la estructura del sistema de software. Cuanto más cerca están conectados los módulos, más fuerte es el acoplamiento, y cuanto más independientes son los módulos, peor el acoplamiento entre módulos depende de la complejidad de la interfaz entre módulos, la forma de llamar y la información transmitida.

2.2 Acoplamiento

       En ingeniería de software, el grado de acoplamiento entre objetos es la dependencia entre objetos. Cuanto mayor sea el acoplamiento entre objetos, mayor será el costo de mantenimiento, por lo que los objetos deben diseñarse para minimizar el acoplamiento entre clases y componentes.

2.3 Desacoplamiento

Desacoplamiento significa literalmente desacoplamiento.

En ingeniería de software, reducir el grado de acoplamiento puede entenderse como desacoplamiento. Si existe una dependencia entre módulos, debe haber acoplamiento. En teoría, el acoplamiento del cero absoluto no se puede lograr, pero se pueden usar algunos métodos existentes para minimizar el grado de acoplamiento. acoplamiento. .

3. Virtualización

Mitigar y resolver problemas de utilización de recursos. El rendimiento de la instancia real es relativamente más estable que el de la virtualización y sus funciones son mucho más potentes.

4. Principio de funcionamiento de la virtualización

Un software llamado Hipervisor (programa de monitoreo de máquinas virtuales) puede separar de manera efectiva los recursos físicos y asignar estos recursos a diferentes entornos virtuales (es decir, tareas que necesitan estos recursos). Un hipervisor puede ubicarse encima de un sistema operativo (como en una computadora portátil) o puede instalarse directamente en el hardware (como un servidor), que es la forma en que la mayoría de las empresas utilizan la virtualización. El hipervisor se hace cargo de los recursos físicos y los divide para que el entorno virtual pueda utilizarlos.

Los recursos del entorno físico se dividen según sea necesario y se distribuyen entre muchos entornos virtuales. Dentro de un entorno virtual (a menudo denominado cliente o máquina virtual), los usuarios pueden interactuar con tareas informáticas y ejecutar cálculos. Una máquina virtual se ejecuta como un único archivo de datos. Como cualquier archivo digital, una máquina virtual se puede mover de una computadora a otra y funcionará de la misma manera cuando se abra en cualquiera de las computadoras.

Mientras se ejecuta el entorno virtual, si un usuario o programa emite una instrucción para solicitar más recursos del entorno físico, el hipervisor pasa la solicitud al sistema físico y almacena en caché los cambios, todo a una velocidad casi nativa (especialmente Sí si la solicitud proviene de un hipervisor de código abierto basado en KVM para máquinas virtuales basadas en kernel).

5. Dos componentes básicos

5.1, QEMU

QEMU es un módulo de control de E/S, que puede entenderse como una cola. El objetivo principal es llamar recursos en el kernel de recursos. Es necesario transportar los recursos separados por lógica KVM a QEMU y luego a la máquina virtual.

QEMU es un módulo de control de E/S, que puede entenderse como una cola. El objetivo principal es llamar recursos en el kernel de recursos. Es necesario transportar los recursos separados por la lógica KVM a QEMU y luego a la máquina virtual.

5.2, KVM

Se utiliza para dividir lógicamente los recursos físicos, abstraerlos en recursos virtualizados, realizar la división lógica de acuerdo con la configuración en VMM y realizar la virtualización de las aplicaciones.

Solo acepta comandos de solicitud de QEMU. Los comandos confidenciales que provienen directamente del programa de aplicación se interceptarán y luego se enviarán a QEMU a través de la interfaz, para que QEMU pueda juzgar si es necesario ejecutarlos.

6. Tipo de virtualización

  1. Virtualización completa : abstraiga todos los recursos de hardware físico a través del software y, finalmente, llame
  2. Paravirtualización : requiere modificación del sistema operativo
  3. Passthrough : use recursos físicos de hardware directamente (necesita soporte, aún no es perfecto)

3. Contenedor Docker

1. El nacimiento de Docker

①. Docker es un producto de código abierto de la empresa dotcloud. dotcloud es una empresa recién establecida en 2010, basada principalmente en la plataforma PAAS (Platfrom as a Service) para brindar servicios a los desarrolladores.

②.Linux Container es una tecnología de virtualización del kernel que puede proporcionar una virtualización ligera para aislar procesos y recursos.

③. Docker es un motor de contenedor avanzado basado en LXC de código abierto del proveedor de PAAS dotCloud. El código fuente está alojado en Github. Se basa en el lenguaje go y cumple con el protocolo Apache2.0.

2. ¿Qué es Docker?

①, es una "máquina virtual" liviana

② Herramientas de código abierto para ejecutar aplicaciones en contenedores Linux

3. ¿Por qué pasar de servidores tradicionales a virtualización?

Ventaja:

① Para los servidores tradicionales, la tasa de utilización se puede mejorar

② Proporcionar un entorno de tiempo de ejecución adecuado para microservicios

③ Alto aislamiento (porque las máquinas virtuales están completamente aisladas del sistema operativo)

④, alta seguridad, no propenso a avalanchas

⑤ Gestión más conveniente (controvertido)

⑥ Es más fácil escalar recursos de manera elástica

⑦ El costo inicial es alto, y este último será "más barato" en comparación con los tradicionales

Desventajas:

① Alto costo inicial

② Alta dificultad de mantenimiento

③, los requisitos de seguridad del host son altos

④ No apto para ejecutar aplicaciones con requisitos de recursos extremadamente altos (referidas como aplicaciones que consumen muchos recursos)

⑤, a veces el costo de funcionamiento es mayor

4. Características de la ventana acoplable

  1. Flexible : incluso las aplicaciones más complejas pueden contenerse.
  2. Ligero : los contenedores utilizan y comparten el kernel del host.
  3. Intercambiable : las actualizaciones y mejoras se pueden implementar sobre la marcha.
  4. Portátil : se puede construir localmente, implementar en la nube y ejecutar en cualquier lugar.
  5. Escalable : las réplicas de contenedores se pueden agregar y distribuir automáticamente.
  6. Apilable : las porciones se pueden apilar verticalmente y al instante.

5. Contenedor Docker VS KVM

5.1, KVM:

Utilice el hipervisor para proporcionar una plataforma de ejecución para máquinas virtuales y administrar la ejecución del sistema operativo en cada máquina virtual. Cada VM debe tener su propio sistema operativo, aplicaciones y archivos dependientes necesarios.

5.2 Contenedor Docker:

El uso del motor Docker para la programación y el aislamiento mejora la utilización de los recursos y permite que se ejecuten más instancias de contenedores con la misma capacidad de hardware; cada contenedor tiene su propio espacio de usuario aislado

5.3 Diferencias

diferencia Contenedor Docker máquina virtual
velocidad de inicio segundo nivel nivel de minutos
el rendimiento de carrera Casi nativo (se ejecuta directamente en el kernel) alrededor del 50% de pérdida
uso del disco MEGABYTE ES        
cantidad cientos de miles Generalmente docenas de unidades
aislamiento Proceso Nivel del sistema (más completo)
Sistema operativo Siempre y cuando sea compatible con Linux Casi todos
grado de embalaje Empaquete solo el código del proyecto y las dependencias, comparta el kernel del host Sistema operativo completo, aislado del host

6. Los tres componentes principales de Docker

1. Duplicación: la duplicación de Docker es un sistema de archivos especial. Además de proporcionar programas, bibliotecas, recursos, configuración y otros archivos necesarios para el tiempo de ejecución del contenedor, también incluye algunos parámetros de configuración preparados para el tiempo de ejecución. Las imágenes no contienen datos dinámicos y su contenido no se modifica una vez creadas. Después de que se ejecuta la imagen de Docker, se convierte en un contenedor (ejecución de Docker)

2. Contenedor: la instancia en ejecución creada por la imagen, Docker usa el contenedor para ejecutar la aplicación. Cada contenedor es una plataforma aislada y segura. Podemos pensar en el contenedor como un entorno operativo Linux ligero.

3. Almacén espejo: un lugar donde los archivos espejo se almacenan de forma centralizada. Una vez que el usuario crea la imagen, puede cargarla en el almacén público o en el almacén privado. Cuando necesite usar la imagen en otro host, solo necesita descargarla del almacén.

7. La lógica de ejecución del contenedor Docker

Docker utiliza el modo de arquitectura cliente/servidor (C/S), y el demonio de Docker (demonio de Docker) como lado del servidor recibe solicitudes de los clientes de Docker y es responsable de crear, ejecutar y distribuir contenedores de Docker. El demonio de Docker generalmente se ejecuta en segundo plano del host de Docker y los usuarios usan el cliente de Docker para interactuar directamente con el demonio de Docker.

① Como se muestra en el proceso naranja, al ejecutar el comando de compilación de Docker se creará una imagen reflejada basada en el archivo de Docker y se almacenará en el host de Docker local.

②, como se muestra en el proceso azul, no se requiere una imagen localmente y el comando de extracción de Docker extraerá la imagen del almacén de imágenes en la nube al host de Docker local.

③ Como se muestra en el proceso negro, ejecutar el comando de inicio de Docker instalará la imagen local existente en el contenedor e iniciará el contenedor.

respectivas funciones

Cliente Docker: un cliente utilizado para establecer comunicación con el demonio Docker (Docker Daemon)

Docker host: una máquina física o virtual utilizada para ejecutar el demonio y los contenedores de Docker

Daemon de Docker: reciba y procese las solicitudes enviadas por los clientes de Docker, controle las solicitudes de la API de Docker y gestione los objetos de Docker, como imágenes, contenedores, redes y volúmenes de datos.

Todo el mundo resume la lengua vernácula:

8. Espacio de nombres de Docker

Docker realiza el aislamiento entre el contenedor y el host a través de seis aislamientos de espacios de nombres.
Ver las seis ubicaciones de espacios de nombres

montar(montar) (punto de montaje) sistema de archivos
usuario El usuario y el grupo de usuarios que opera el proceso.
pid número de proceso
Ud. Nombre de host y nombre de dominio
ipc Semáforo, cola de mensajes, memoria compartida
neto Dispositivos de red, pilas de protocolos de red, puertos, etc.

9. Grupo de control—cgroups (Grupos de control)

Los seis espacios de nombres son administrados por cgroups. La última versión de administración de centos cgroups es la versión 3.8, 3.6 y 3.5 no se puede usar

Docker restringe el uso de recursos de host por contenedores a través de cgroups

Cuatro funciones de cgroup :

Limitación de recursos: cgroup puede limitar los recursos totales utilizados por el grupo de procesos

② Asignación de prioridad: a través de la cantidad de segmentos de tiempo de CPU asignados y el tamaño del ancho de banda de E/S del disco duro, en realidad es equivalente a controlar el nivel de prioridad del proceso en ejecución

③ Estadísticas de recursos: cgroup puede contar el uso de los recursos del sistema, como el tiempo de uso de la CPU, el uso de la memoria, etc., para la facturación por volumen. Al mismo tiempo, también es compatible con la función de suspensión, lo que significa que todos los recursos están restringidos a través de cgroups y los recursos no se pueden usar. Tenga en cuenta que esto no significa que nuestro programa no se pueda usar, sino que los recursos no se pueden usar y están en un estado de espera

④, control de procesos: puede realizar operaciones como suspender y reanudar en el grupo de procesos

10. El principio subyacente de Docker

cgroups y espacios de nombres

Supongo que te gusta

Origin blog.csdn.net/m0_62948770/article/details/127286723
Recomendado
Clasificación