Resumen
En esta publicación, cubrimos una introducción a los contenedores acoplables y explicamos el concepto de contenedorización a través de ilustraciones conceptuales y un ejemplo práctico. También cubrimos la configuración, construcción y ejecución de contenedores acoplables y explicamos el concepto de ejecutar varios contenedores acoplables juntos a través de docker-compose.
Esta publicación cubre las respuestas para Introducción a Docker y Introducción a la contenedorización habitación en TryHackMe.
¿Qué es la contenerización?
En términos informáticos, la contenedorización es el proceso de empaquetar una aplicación y los recursos necesarios (como bibliotecas y paquetes) en un paquete llamado contenedor. El proceso de empaquetar aplicaciones hace que las aplicaciones sean considerablemente portátiles y fáciles de ejecutar.
Las aplicaciones modernas suelen ser complejas y normalmente dependen de que se instalen marcos y bibliotecas en un dispositivo antes de que la aplicación pueda ejecutarse. Estas dependencias pueden:
- Ser difícil de instalar dependiendo del entorno en el que se ejecuta la aplicación (¡es posible que algunos sistemas operativos ni siquiera los admitan!)
- Crea dificultades para que los desarrolladores diagnostiquen y repliquen fallas, ya que podría ser un problema con el entorno de la aplicación, ¡no con la aplicación en sí!
- A menudo pueden entrar en conflicto entre sí. Por ejemplo, tener varias versiones de Python para ejecutar diferentes aplicaciones es un dolor de cabeza para el usuario, y una aplicación puede funcionar con una versión de Python y no con otra.
Obtenga notas del certificado OSCP
¿Qué son los contenedores Docker?
Docker es una plataforma de contenedorización de código abierto, extensa y relativamente sencilla. El ecosistema Docker permite implementar, gestionar y compartir aplicaciones (imágenes; hablaremos de esto más adelante) con facilidad.
Trabajando en linux, Windows y MacOS, Docker es una opción inteligente para ejecutar aplicaciones. Las aplicaciones pueden publicarse como “imágenes” y compartirse con otras personas. Todo lo que se requiere es extraer (descargar) la imagen y ejecutarla con Docker.
Docker emplea la misma tecnología utilizada en la creación de contenedores para aislar aplicaciones en contenedores llamada Docker Engine. Docker Engine es esencialmente una API que se ejecuta en el sistema operativo host, que se comunica entre el sistema operativo y los contenedores para acceder al hardware del sistema (como CPU, RAM, redes y disco).
Debido a esto, el motor Docker es extenso y le permite hacer cosas como:
- Conectar contenedores entre sí (por ejemplo, un contenedor que ejecuta una aplicación web y otro contenedor que ejecuta una base de datos)
- Exportar e importar aplicaciones (imágenes)
- Transferir archivos entre el sistema operativo y el contenedor.
Docker usa la sintaxis de programación. YAML para permitir a los desarrolladores indicar cómo se debe construir un contenedor y qué se ejecuta. Ésta es una razón importante por la que Docker es tan portátil y fácil de depurar; comparta las instrucciones y las compilará y ejecutará en cualquier dispositivo que admita Docker Engine.
Desafíos Respuestas
¿Cuál es la abreviatura del lenguaje de sintaxis de programación que utiliza Docker?
¿Dónde se mostró Docker por primera vez?
¿Qué versión de Unix tuvo los primeros conceptos de contenerización?
jalar
una imagen de Docker, ¿cómo se vería nuestro comando?Si quisiéramos enumerar todas las imágenes en un dispositivo que ejecuta Docker, ¿cómo se vería nuestro comando?
Digamos que queremos extraer la imagen "tryhackme" (sin comillas); ¿Cómo sería nuestro comando?
Digamos que queremos extraer la imagen "tryhackme" con la etiqueta "1337" (sin comillas). ¿Cómo sería nuestro comando?
¿Cómo se vería nuestro comando si quisiéramos ejecutar un contenedor? interactivamente?
Nota: Supongamos que no especificamos ninguna imagen aquí.
¿Cómo se vería nuestro comando si quisiéramos ejecutar un contenedor en “separado" ¿modo?
Nota: Supongamos que no especificamos ninguna imagen aquí.
Digamos que queremos ejecutar un contenedor que se ejecutará y vincular un servidor web en el puerto 80. ¿Cómo sería nuestro comando?
Nota: Supongamos que no especificamos ninguna imagen aquí.
¿Cómo enumeraríamos todos? correr contenedores?
Ahora, ¿cómo enumeraríamos todo contenedores (incluidos los detenidos)?
¿Qué comando de Docker usaríamos para crear una imagen usando un Dockerfile?
Digamos que queremos nombrar esta imagen; ¿Qué argumento usaríamos?
docker-componer
a puesta en marcha una serie de contenedores. ¿Qué argumento me permite hacer esto?Quiero usar docker-componer
a borrar la serie de contenedores. ¿Qué argumento me permite hacer esto?
¿Cuál es el nombre del archivo .yml que docker-componer
¿usos?
Nota: Para esta pregunta, deberá incluir el .yml extensión de archivo en su respuesta
Utilice Docker para iniciar un servidor web con la imagen del "servidor web" (sin comillas). Necesitaras ejecutar el contenedor con el puerto 80.
Después de iniciar el contenedor, intente conectarse a https://LAB_WEB_URL.p.thmlabs.com/ en tu navegador. ¿Qué es la bandera?