Aprendizaje Docker Parte 1: Los fundamentos

Las tecnologías de contenedorización de aplicaciones son ampliamente utilizadas en el desarrollo de software y análisis de datos. Estas tecnologías ayudan a hacer que las aplicaciones sean más seguras, hacerlas más fáciles de implementar y mejorar su escalabilidad. El crecimiento y el desarrollo de tecnologías de contenedorización pueden considerarse una de las tendencias más importantes de nuestro tiempo.

Docker es una plataforma diseñada para desarrollar, implementar y ejecutar aplicaciones en contenedores. La palabra "Docker" se ha convertido recientemente en un sinónimo de la palabra "contenedorización". Y si aún no está usando Docker, pero al mismo tiempo está trabajando o va a trabajar en las áreas de desarrollo de aplicaciones o análisis de datos, entonces Docker es lo que seguramente encontrará en el futuro.

Parte 1: lo básico
Parte 2: términos y conceptos
Parte 3: archivos Dockerfile
Parte 4: reducir el tamaño de las imágenes y acelerar su ensamblaje
Parte 5: equipos
Parte 6: trabajar con datos

imagen

Si aún no sabe qué es Docker, ahora tiene la oportunidad de dar el primer paso para comprender esta plataforma. Es decir, habiendo dominado este material, comprenderá los conceptos básicos de Docker y simultáneamente preparará pizza.

Metáforas y Docker


Estamos constantemente confrontados con metáforas. Si nos fijamos en el diccionario de Ozhegov, resulta que la metáfora es "una comparación figurativa oculta, que compara un objeto, un fenómeno con otro". Las metáforas nos ayudan a comprender la esencia de los nuevos fenómenos para nosotros. Por ejemplo, los contenedores virtuales se pueden comparar con los contenedores de plástico ordinarios. Dicha comparación, al comparar las propiedades de los contenedores ordinarios que ya conocemos con las propiedades de los contenedores virtuales, lo ayudará a conocerlos primero y luego a comprender su esencia.


Contenedor

Como comprenderá, vamos a comenzar la conversación sobre Docker con el concepto de "contenedor".

Contenedor


Al igual que un contenedor de plástico normal, un contenedor Docker tiene las siguientes características:

  1. Puedes guardar algo en él. Algo puede estar en el contenedor o afuera.
  2. Se puede llevar. Puede usar el contenedor Docker en su computadora local, en la computadora de un colega, en un servidor del proveedor de servicios en la nube (como AWS). Esto hace que los contenedores Docker sean similares a los contenedores ordinarios, en los que, por ejemplo, transportan varias baratijas dulces cuando se mudan a una casa nueva.
  3. Es conveniente poner algo en el contenedor y es conveniente sacar algo de él. Un recipiente ordinario tiene una tapa en los pestillos, que debe retirarse para colocar algo en el recipiente o quitar algo de él. Los contenedores Docker tienen algo similar que representa su interfaz, es decir, mecanismos que les permiten interactuar con el mundo exterior. Por ejemplo, un contenedor tiene puertos que se pueden abrir para que se pueda acceder a una aplicación que se ejecuta en el contenedor desde un navegador. También puede trabajar con el contenedor utilizando herramientas de línea de comandos.
  4. Si necesita un contenedor, puede pedirlo en la tienda en línea. Se puede comprar un contenedor vacío, por ejemplo, en el sitio web de Amazon. Los contenedores llegan a esta tienda de fabricantes que los fabrican en grandes cantidades utilizando moldes. En el caso de los contenedores Docker, lo que se puede comparar con el molde, es decir, la imagen del contenedor, se almacena en un repositorio especial. Si necesita un determinado contenedor, puede descargar la imagen correspondiente del repositorio y, utilizándolo, crear este contenedor.

Por supuesto, los contenedores de plástico, a diferencia de los contenedores Docker, nadie lo enviará de forma gratuita, y cuando los reciba, estarán vacíos. Pero siempre hay algo interesante en los contenedores Docker.

Organismos vivos


Otro enfoque para pensar en los contenedores Docker es compararlos con instancias de organismos vivos. Una "instancia" es algo que existe de alguna forma. Esto no es solo código. Este es el código que causó la existencia de algo más grande que él mismo, algo, figurativamente hablando, vivo. Al igual que otros organismos vivos, las instancias de contenedores nacen, viven y mueren.


Monstruo convocado a la vida

Los contenedores Docker son imágenes animadas de Docker.

Software


Los contenedores Docker se pueden comparar no solo con contenedores ordinarios o con organismos vivos. Se pueden comparar con los programas. Después de todo, los contenedores son programas. Y, en un nivel fundamental, un contenedor es un conjunto de instrucciones que se ejecuta en algún procesador y procesa algún tipo de datos.


Un contenedor es un programa

En tiempo de ejecución, el contenedor Docker generalmente ejecuta algún tipo de programa dentro de él. Ella realiza ciertas acciones en el contenedor, es decir, hace algo útil.

Por ejemplo, el código que se ejecuta en un contenedor Docker puede haber enviado el texto que está leyendo a su computadora. Es muy posible que el código que se ejecuta en el contenedor Docker acepte los comandos de voz que le da a Amazon Alexa y los convierta en instrucciones para algunos otros programas que se ejecutan en otros contenedores.

Con Docker, puede ejecutar varios contenedores en la misma computadora al mismo tiempo. Y, como cualquier otro programa, los contenedores Docker se pueden iniciar, detener y eliminar. Puede examinar sus contenidos y crearlos.

Conceptos de Docker


▍ Máquinas virtuales


Los predecesores de los contenedores Docker fueron máquinas virtuales. Una máquina virtual, como un contenedor, aísla la aplicación y sus dependencias del entorno externo. Sin embargo, los contenedores Docker ofrecen ventajas sobre las máquinas virtuales. Por lo tanto, consumen menos recursos, son muy fáciles de transferir, se inician más rápido y llegan a un estado saludable. En este artículo puede encontrar una comparación detallada de contenedores y máquinas virtuales.

▍ Imagen del contenedor Docker


Ya hemos hablado sobre "imágenes" arriba. Que es esto Buena pregunta Lo que Docker llama término "imagen" o, en inglés, "imagen" no es lo mismo que, por ejemplo, fotografía (este es uno de los significados de la palabra "imagen").


Las imágenes de Docker no son fotos

Las imágenes de los contenedores Docker se pueden comparar con dibujos, con moldes para galletas o con moldes para hacer productos de plástico. Las imágenes son plantillas inmutables que se utilizan para crear los mismos contenedores.


Los contenedores Docker parecen cortadores de galletas

La imagen del contenedor Docker contiene la imagen del sistema operativo base, el código de la aplicación, la biblioteca de la que depende. Todo esto está organizado como una entidad única, en función de la cual puede crear un contenedor.

▍ Dockerfile


El Dockerfile contiene un conjunto de instrucciones, después de lo cual el Docker ensamblará la imagen del contenedor. Este archivo contiene una descripción de la imagen base, que será la capa de imagen original. Entre las imágenes base oficiales populares, se pueden observar python , ubuntu , alpine .

Puede agregar capas adicionales a la imagen del contenedor, encima de la imagen base. Esto se realiza de acuerdo con las instrucciones del Dockerfile . Por ejemplo, si el Dockerfile describe una imagen que planea usar para resolver tareas de aprendizaje automático, entonces puede contener instrucciones para incluir las bibliotecas NumPy, Pandas y Scikit-learn en la capa intermedia de dicha imagen.

Y finalmente, la imagen puede contener, además de todas las demás, otra capa delgada, los datos almacenados en los que se puede cambiar. Esta es una pequeña capa de volumen que contiene el programa que planea ejecutar en el contenedor.

▍ Contenedor Docker


Para iniciar el contenedor, necesitamos, primero, la imagen del contenedor y, en segundo lugar, el entorno en el que está instalado Docker, capaz de comprender un comando del formulario docker run image_name . Este comando crea un contenedor a partir de la imagen y lo inicia.

▍ Repositorio de contenedores


Si desea permitir que otras personas creen contenedores basados ​​en su imagen, puede enviar esta imagen a la nube. El repositorio más grande de este tipo es el repositorio Docker Hub . Se utiliza cuando se trabaja con Docker de manera predeterminada.

Ya hemos discutido muchas cosas. Es hora de poner todo junto y comparar el trabajo con los contenedores Docker con la pizza.

Cocinar con Docker



La pizza lista es un recipiente

  • Una receta de pizza es un Dockerfile . Nos dice lo que hay que hacer para lograr el objetivo, es decir, conseguir un contenedor que funcione.
  • Los ingredientes que componen la pizza son capas de la imagen del contenedor. Para nuestra pizza necesitarás pastel, salsa y queso.

Si pones la receta y los ingredientes en la mesa, resulta que en un lugar se recolecta todo lo que necesitas para cocinar pizza. Todo esto se puede comparar con la imagen del contenedor Docker.
En la receta ( Dockerfile ) puede averiguar qué secuencia de acciones debe realizar para cocinar pizza:

  • Korzh está listo para usar, no lo cambiamos. Se puede comparar con la imagen básica del sistema operativo Ubuntu. Esta es la capa inferior de la imagen, primero se agrega a la imagen.
  • Luego se agrega queso al pastel. Esto es como agregar una segunda capa a la imagen como una biblioteca externa como NumPy.
  • Luego, encima del queso, agregue la salsa. Este es el código de la aplicación que debe ejecutarse en el contenedor.

Ahora es el momento de cocinar pizza en el horno.


Oven es una plataforma Docker

El horno en el que se cocina la pizza se asemeja a la plataforma Docker. El horno está instalado en la cocina, con su ayuda puede cocinar alimentos. Del mismo modo, Docker se instala en una computadora para "cocinar" los contenedores.

El horno, si es eléctrico, se enciende girando la perilla del controlador de temperatura. El docker run image_name es algo así como un controlador de temperatura, cuya "rotación" hace que el sistema cree y ejecute un contenedor.

Pizza preparada: este es el contenedor Docker.

Y comer pizza significa usar la aplicación que se ejecuta en el contenedor.

Al igual que hacer pizza, prepararse para el trabajo de los contenedores Docker lleva algo de tiempo, pero al final, y en ambos casos, resulta algo sabroso.

Resumen


Aquí, a nivel conceptual, cubrimos los conceptos básicos de Docker. Esperamos que las comparaciones presentadas aquí lo hayan ayudado a comprender qué es Docker y a sentir el valor de las metáforas en el dominio de las nuevas tecnologías.

Estimados lectores! Esta publicación es una traducción del primer artículo de la serie de tutoriales de Docker. Según el autor, se planea lanzar un total de 5 de estos materiales. Las partes segunda , tercera y cuarta ya están listas. Cuéntanos, ¿vale la pena traducir los siguientes artículos de esta serie?

Source: https://habr.com/ru/post/438796/


All Articles