Introducción a Docker. Desarrollar una imagen de Docker simple para su propio servidor.
La versión rusa de la tarea se puede encontrar en el repositorio.

Planeta Tierra, en algún lugar del medio del mar, hoy.
Nunca te gustó moverte. Mucho alboroto, pequeña acción. Pero lograste encontrar un gran trabajo en otra ciudad para sumergirte en el mundo de DevOps. Y no eres uno para dejar que un pequeño problema arruine tus planes.
Desde la ventana de su cabina, escuchas el sonido de las olas, el barco se balanceaba pacíficamente sobre ellas y recuerdas tu novela favorita sobre el mar: "Moby Dick". Aunque la trama está lejos de ser directa, con muchas digresiones líricas y reflexiones filosóficas, usted, como todos los demás, asocia este libro principalmente con el propio Moby Dick, la ballena blanca.
"Hmm ... ballena blanca ..." Aquí es donde recuerdas que durante el largo viaje querías trabajar en el muelle.
Nginx (pronunciado "Engine-X") es un servidor proxy inverso de código abierto para HTTP, HTTPS, etc. Nginx también se usa como un equilibrador de carga, servidor web y para el almacenamiento en caché de HTTP. El proyecto NGINX se centra en el alto paralelismo, el alto rendimiento y el bajo uso de memoria.
Nginx tiene un proceso principal y varios procesos de trabajadores. La tarea principal del proceso principal es leer y verificar la configuración y administrar los procesos de los trabajadores. Los procesos de trabajadores realizan el procesamiento real de las solicitudes.
Cómo funcionan NGINX y sus módulos se define en el archivo de configuración. Por defecto, el archivo de configuración se llama nginx.conf
Un contenedor es un nuevo "archivo ejecutable" que incluye todas las dependencias que el producto necesita.
La principal ventaja de la contenedorización es el aislamiento de las dependencias y un solo punto de inicio de software simple.
Términos básicos:
Docker es una plataforma diseñada para desarrollar, implementar y ejecutar aplicaciones en contenedores. Docker es la herramienta de contenedores estándar de 'facto' en la industria, pero no es la primera ni la última entre las tecnologías de contenedores.
Los precursores de los contenedores Docker eran 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 tienen ventajas sobre las máquinas virtuales. Por ejemplo, son muy fáciles de transmitir, consumir menos recursos, comenzar y funcionar más rápido.
Una imagen de Docker consiste en capas. Cada capa describe algunos cambios que se realizarán a los datos en el contenedor en ejecución. La estructura de los enlaces entre capas es jerárquica. Hay una capa base en la que las otras capas están "superpuestas". El DockerFile se usa para crear una imagen. Cada instrucción en ella crea una nueva capa.
Dockle es una herramienta de verificación de seguridad de imágenes de contenedor que se puede utilizar para encontrar vulnerabilidades.
Características clave y beneficios del muelle :
Docker Compose es una herramienta para manejar tareas relacionadas con la implementación de proyectos. Docker Compose puede ser útil si se utilizan varios servicios para mantener el proyecto en funcionamiento.
Docker Compose se utiliza para administrar simultáneamente múltiples contenedores que forman parte de una aplicación. Esta herramienta ofrece las mismas características que Docker, pero permite funcionar con aplicaciones distribuidas más complejas, por ejemplo, microservicios.
Como resultado del trabajo, debe proporcionar un informe sobre las dos primeras tareas. Cada parte de la tarea describe lo que debe agregarse al informe una vez que se haya completado. Esto puede ser respuestas a preguntas, capturas de pantalla, etc.
Como resultado de la tercera tarea, debe proporcionar archivos de origen para ejecutar el servidor web.
Como resultado de las tareas cuarta y quinta, debe proporcionar DockerFiles.
Como resultado de la sexta tarea, debe proporcionar un archivo Docker-Compose.yml y los DockerFiles necesarios para ejecutarlo (si no se proporciona antes).
Como el objetivo final de su pequeña práctica, ha elegido de inmediato escribir una imagen Docker para su propio servidor web, por lo que primero debe tratar con una imagen de Docker preparada para el servidor. Elegiste un Nginx bastante simple.
== Tarea ==
docker pull . docker images . docker run -d [image_id|repository] . docker ps . docker inspect [container_id|container_name] . docker stop [container_id|container_name] . docker ps . docker restart [container_id|container_name] . Nota: No cargue archivos pesados (> 10 mb) a GIT.
La imagen y el contenedor de Docker están listos. Ahora podemos analizar la configuración de Nginx y mostrar el estado de la página.
== Tarea ==
docker cp . docker rmi [image_id|repository] sin eliminar primero el contenedor. Es hora de tomar un pequeño descanso del Docker para prepararse para la última etapa. Es hora de escribir su propio servidor.
== Tarea ==
Hello World! . Ahora todo está listo. Puede comenzar a escribir la imagen Docker para el servidor creado.
== Tarea ==
Al escribir una imagen de Docker, evite múltiples llamadas de instrucciones de ejecución
Nginx se puede instalar dentro del propio Docker, o puede usar una imagen preparada con Nginx como base.
docker build , especificando el nombre y la etiqueta. docker images que todo está construido correctamente. *Si todo se hace correctamente, después de guardar el archivo y reiniciar el contenedor, el archivo de configuración dentro de la imagen de Docker debe actualizarse sin ningún paso adicional
Una vez que haya escrito la imagen, nunca es una mala idea verificarla en busca de seguridad.
== Tarea ==
dockle [image_id|repository] . Ahí, has terminado tu calentamiento. Sin embargo, espera un minuto ... ¿por qué no intentar experimentar con la implementación de un proyecto que consta de varias imágenes de Docker a la vez?
== Tarea ==
docker-compose build y docker-compose up . Toque aquí para dejar sus comentarios sobre el proyecto . El equipo de productos realmente trata de mejorar su experiencia educativa.