Introducción a Docker y conocimientos previos

Los artículos y códigos se han archivado en [Github warehouse: https://github.com/timerring/backend-tutorial ] o la cuenta pública [AIShareLab] también se puede obtener respondiendo a docker .

descripción general

¿Por qué aparece la ventana acoplable?

Antes de configurar un entorno operativo de aplicación en el servidor, debe instalar varios software, paquetes de controladores Java/RabbitMQ/MySQL/JDBC, etc. Sin mencionar lo problemático que es instalar y configurar estas cosas, aún no es multiplataforma. Si instalamos estos entornos en Windows, tendríamos que reinstalarlos en Linux. Además, incluso si no se cruza el sistema operativo, es muy problemático trasplantar la aplicación a otro servidor con el mismo sistema operativo.

Tradicionalmente se cree que una vez que se completa el desarrollo/prueba de codificación de software, la salida es un programa o un código de bytes binario que se puede compilar y ejecutar (Java como ejemplo). Para que estos programas se ejecuten sin problemas, el equipo de desarrollo también debe preparar archivos de implementación completos para que el equipo de operación y mantenimiento pueda implementar la aplicación. El desarrollo debe informar claramente al equipo de implementación de operación y mantenimiento de todos los archivos de configuración + todo el software. ambientes utilizados. Aun así, sin embargo, a menudo se producen errores de implementación. La aparición de Docker ha permitido a Docker romper con el concepto anterior de "programas como aplicaciones". Excepto por el núcleo del sistema operativo a través de imágenes, el entorno del sistema necesario para ejecutar la aplicación se empaqueta de abajo hacia arriba para lograr una operación multiplataforma perfecta de la aplicación .

Filosofía Docker

Docker es un proyecto de código abierto en la nube implementado en base al lenguaje Go.

El objetivo principal de Docker es "Crear, enviar y ejecutar cualquier aplicación, en cualquier lugar", que es hacer que la aplicación del usuario (que puede ser una aplicación WEB o una aplicación de base de datos, etc.) y su entorno operativo puedan lograr "duplicar una vez, ejecutar en todas partes". ".

En pocas palabras, es un contenedor de software que resuelve los problemas del entorno operativo y la configuración , y es una tecnología de virtualización de contenedores que facilita la integración continua y contribuye al lanzamiento general.

Contenedores frente a máquinas virtuales

Una breve historia del desarrollo de contenedores


Tecnología de máquina virtual tradicional

La máquina virtual (máquina virtual) es una solución con instalación de entorno.

Puede ejecutar otro sistema operativo en un sistema operativo, como ejecutar el sistema Linux CentOS 7 en el sistema Windows 10. La aplicación no es consciente de esto, porque la máquina virtual se ve exactamente igual que el sistema real, pero para el sistema subyacente, la máquina virtual es solo un archivo ordinario, que se puede eliminar cuando no se necesita y no tiene ningún efecto. en otras partes. Este tipo de máquina virtual ejecuta perfectamente otro sistema, lo que puede mantener sin cambios la lógica entre el programa de aplicación, el sistema operativo y el hardware.

Desventajas de las máquinas virtuales:

  1. Más uso de recursos 2. Más pasos redundantes 3. Inicio lento

tecnología de virtualización de contenedores

Debido a algunas deficiencias de la máquina virtual anterior, Linux ha desarrollado otra tecnología de virtualización:

Contenedores de Linux (Contenedores de Linux, abreviado como LXC)

Un contenedor de Linux es una serie de procesos aislados del resto del sistema , que se ejecutan desde otra imagen que proporciona todos los archivos necesarios para respaldar el proceso. La imagen proporcionada por el contenedor contiene todas las dependencias de la aplicación, por lo que es portátil y coherente desde el desarrollo hasta la prueba y la producción. En lugar de simular un sistema operativo completo, los contenedores de Linux aíslan los procesos . Con contenedores, es posible empaquetar todos los recursos necesarios para que el software se ejecute en un contenedor aislado. A diferencia de una máquina virtual, un contenedor no necesita incluir un sistema operativo completo, sino solo los recursos de la biblioteca y la configuración necesaria para que el software funcione. De este modo, el sistema se vuelve eficiente y liviano y garantiza que el software implementado en cualquier entorno pueda ejecutarse de manera uniforme.

Los contenedores Docker implementan la virtualización a nivel de sistema operativo y reutilizan directamente el sistema operativo del host local, mientras que las máquinas virtuales tradicionales implementan la virtualización a nivel de hardware. En comparación con las máquinas virtuales tradicionales, Docker tiene las ventajas de una velocidad de inicio rápida y un tamaño reducido.

Comparado

Compare las diferencias entre Docker y los métodos de virtualización tradicionales:

  • La tecnología de máquina virtual tradicional consiste en virtualizar un conjunto de hardware, ejecutar un sistema operativo completo en él y luego ejecutar el proceso de aplicación requerido en el sistema;
  • El proceso de aplicación en el contenedor se ejecuta directamente en el kernel del host. El contenedor no tiene su propio kernel y no realiza virtualización de hardware. Por lo tanto, los contenedores son más portátiles que las máquinas virtuales tradicionales.
  • Cada contenedor está aislado entre sí y cada contenedor tiene su propio sistema de archivos. Los procesos entre contenedores no se afectarán entre sí y los recursos informáticos se pueden distinguir.

ventaja

Cree una vez, ejecute en cualquier lugar

  • Entrega e implementación de aplicaciones más rápidas: después de que se completa el desarrollo de la aplicación tradicional, se deben proporcionar una serie de programas de instalación e instrucciones de configuración.Después de la instalación y la implementación, se deben realizar configuraciones complejas de acuerdo con los documentos de configuración para que se ejecuten normalmente. Después de Dockerization, solo se necesita entregar una pequeña cantidad de archivos de imagen de contenedor, y la imagen se puede cargar y ejecutar en el entorno de producción oficial. La configuración de instalación de la aplicación ya está integrada en la imagen, lo que ahorra mucho tiempo para la configuración de implementación y verificación de prueba.
  • Actualización y expansión más convenientes: con el desarrollo de la arquitectura de microservicios y Docker, una gran cantidad de aplicaciones se estructurarán a través de microservicios, y el desarrollo y la construcción de aplicaciones se convertirán en bloques de construcción de Lego.Cada contenedor de Docker se convertirá en un "bloques de construcción" , las actualizaciones de la aplicación serán muy fáciles. Cuando el contenedor existente no es suficiente para admitir el procesamiento comercial, el nuevo contenedor se puede expandir rápidamente mediante la duplicación, de modo que la expansión del sistema de aplicación se puede cambiar del nivel de día original al nivel de minutos o incluso al segundo nivel.
  • Operación y mantenimiento del sistema más sencillos: después de que la aplicación esté en un contenedor, la aplicación que se ejecuta en el entorno de producción puede ser altamente consistente con la aplicación en el entorno de desarrollo y prueba. El contenedor encapsulará completamente el entorno y el estado relacionados con la aplicación, y no será afectado por el subyacente La inconsistencia del sistema operativo afecta a la aplicación y genera nuevos errores. Cuando ocurre una excepción del programa, también se puede localizar y reparar rápidamente a través del mismo contenedor del entorno de prueba.
  • Utilización más eficiente de los recursos informáticos: Docker es una virtualización a nivel de kernel , que no requiere soporte adicional de hipervisor como las tecnologías de virtualización tradicionales, por lo que muchas instancias de contenedores pueden ejecutarse en una máquina física, lo que puede mejorar en gran medida la CPU y la capacidad de la CPU del servidor físico. Utilización de la memoria.

referencia

  1. Sitio web oficial: sitio web oficial de docker
  2. Almacén: sitio web oficial de Docker Hub

Supongo que te gusta

Origin blog.csdn.net/m0_52316372/article/details/131886255
Recomendado
Clasificación