Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo explicar la tecnología Docker (contenedor) en términos fáciles de entender

Cómo explicar la tecnología Docker (contenedor) en términos fáciles de entender

La introducción en el sitio web oficial es la siguiente:

Docker es una plataforma abierta para que desarrolladores y administradores de sistemas creen, envíen y ejecuten aplicaciones distribuidas....

De hecho, después de leer esta frase, todavía no entiendo qué es, así que lo explicaré lentamente a continuación. Pero para resumir, imaginarla como una máquina virtual ultraligera implementada de una manera novedosa es correcto en general. Por supuesto, los principios de implementación y las aplicaciones siguen siendo muy diferentes de los de VM, y el nombre profesional es contenedor de aplicaciones (Application Container).

¿Por qué utilizar contenedores?

Entonces, ¿cómo es un contenedor de aplicaciones? Un contenedor de aplicaciones completo parece una máquina virtual con un conjunto de aplicaciones específicas instaladas. Por ejemplo, si quiero usar MySQL ahora, buscaré un contenedor con MySQL instalado y lo ejecutaré. Luego puedo usar MySQL.

¿Por qué no instalo MySQL directamente? ¿Por qué necesito un concepto tan extraño de contenedor? Dicho esto, si realmente desea instalar MySQL, es posible que deba instalar un montón de bibliotecas dependientes y configurarlas de acuerdo con la plataforma y la versión de su sistema operativo. A veces tiene que compilar desde el código fuente e informar un montón de cosas inexplicables. errores. Esto no es cierto. Y si su máquina falla, será necesario reiniciar todo y es posible que deba rehacer la configuración. Pero con los contenedores, equivale a tener una máquina virtual que se puede ejecutar. Siempre que pueda ejecutar el contenedor, se guardará la configuración de MySQL. Y una vez que quieras cambiar una máquina, simplemente toma el contenedor y colócalo en otra máquina. No es necesario considerar el hardware, el sistema operativo, el entorno operativo, etc.

Una gran utilidad en la empresa es garantizar que el entorno de desarrollo fuera de línea, el entorno de prueba y el entorno de producción en línea sean consistentes. En aquel entonces, a menudo me encontraba con este tipo de cosas en Baidu. Cuando los desarrolladores preparaban algo para probar, generalmente se les entregaba un fragmento de código y una hoja de implementación que presentaba los pasos para ponerlo en marcha. Como resultado, el código no se pudo ejecutar en la máquina de prueba, por lo que los desarrolladores corrieron buscando problemas. En un momento, se olvidaron de enviar el archivo de configuración y, en otro momento, escribieron el comando en línea incorrecto. Encontré un error y lo informé. Cuando el equipo de desarrollo echó un vistazo, ¿por qué olvidé escribir este comando en la hoja de inicio nuevamente? Sucederán cosas similares cuando esté en línea, y la versión de su software es diferente a la de mi máquina... Cuando estaba en Amazon, un desarrollador ocupaba directamente los tres puestos anteriores y había un mecanismo de implementación automatizado. Habrá menos problemas, pero todo el mundo todavía tiene miedo cuando se conecta.

Si usa un contenedor, desarrolle directamente en el contenedor. Al realizar la prueba, pruebe todo el contenedor. Después de la prueba, simplemente cambie los cambios en el contenedor y luego conéctese. A través de contenedores, todos los entornos de desarrollo, prueba y producción pueden permanecer altamente consistentes.

Además, los contenedores también tienen un cierto grado de aislamiento como las máquinas virtuales. Los datos y el espacio de memoria entre cada contenedor están aislados entre sí, lo que puede garantizar un cierto grado de seguridad.