Docker Cheat Sheet

Al trabajar con entornos de consola de comandos, como servidores Linux sin GUI, SSH, o incluso herramientas de Forense o Hacking, vamos memorizando su uso y estructura de funcionamiento a base de ejecutar el mismo comando una y otra vez. Pero cuando hay que usar herramientas muy diversas, al final es complicado recordar todos los parámetros de cada uno de los comandos. Por eso nacieron las “Cheat Sheet” (Hojas de Chuletas en español). Estas hojas son resúmenes esquemáticos de todos los parámetros de funcionamiento de una herramienta, un lenguaje de programación o un sistema operativo. Personalmente utilizo a diario varias de estas “Cheat Sheet”, por ejemplo, para Linux me gusta mucho la que hizo @Manz llamada “Terminal de Linux”.

Fig. Logo Docker

Para forense me quedo con los que edita gratuitamente SANS, son tan variados y tocan tantas especialidades que no pueden faltan en ningún laboratorio forense. Se pueden Descargar desde la Web de SANS.

Aunque también me gusta mucho el libro “BLue Team Field Manual” que aglutina todos estos comandos en forma de libro de consulta. Otra ventaja de leer Cheat Sheets que han creado otras personas, es que siempre se puede aprender algún comando o parámetro de una herramienta que utilizamos a diario y que no conocíamos.

Pero a veces, me gusta hacer mis propios Cheat Sheet, ya que me resulta mas sencillo utilizar mi propia estructura de explicación que tratar de entender las observaciones de un tercero. Este es el caso de Docker, como sabéis, Docker es un sistema de “micro” contenedores que permiten ejecutar casi cualquier aplicación sin necesidad de tener que virtualizar un sistema operativo completo. Por ejemplo, si necesito un servidor APACHE, puedo desplegar una máquina virtual Ubuntu, instalarle Apache y utilizar el servicio. Pero a veces, esto es un poco “matar moscas a cañonazos”. Así nació Docker, una forma de instalar solo el servicio o aplicación que necesitamos de forma aislada en un contenedor. A este contenedor le podemos dar conexión al host, a otros contenedores entre si o dejarlo totalmente aislado. Para los que nunca utilizasteis Docker, y de forma resumida, se puede decir que Docker es como una mini máquina virtual que no necesita un sistema operativo completo para ejecutar una aplicación.

Fig. Repositorio Docker Hub

Estos contenedores, como os imaginarias, a nivel de administración de sistemas, forense o pentesting son una herramienta muy potente, ya que en vez de estar ejecutando varias máquinas virtuales, con todos los recursos que estas pueden consumir, podemos ejecutar una sola instancia de Docker con varios contenedores que no necesitarán tantos recursos para mantener el servicio en producción. Eso si, como todo en la vida, Docker tiene limitaciones, si lo queremos utilizar para un servicio que necesite muchos recursos, posiblemente no sea lo más adecuado.

Una vez hecha la introducción de lo que es un Docker, os comparto el Cheat Sheet de Docker que he creado hace un tiempo y que utilizo a diario para descargar imágenes, gestionar redes o crear contenedores de Docker. Como veis su uso es muy sencillo, incluso hay comandos redundantes que se le puede eliminar alguno de los parámetros, al final he decidido dejar estos parámetros “dobles” para que se pueda entender bien cual es su estructura. Por ejemplo, no siempre hay que utilizar el parámetro “container”, ya que si implícitamente estamos invocando a un contenedor, excusamos indicárselo doblemente.

Fig. Docker CheatSheet

Puedes Descargar gratuitamente este Cheat Sheet de Docker en alta calidad y formato PDF pulsando AQUÍ.

Si todavía tienes dudas sobre si es interesante el uso de Docker… por ejemplo, a nivel forense, os cuento en lo que estuve trabajando este fin de semana y que en breve escribiré por aquí: Hay que analizar un servidor ASTERISK cuya base de datos opera bajo MySQL, una vez extraída la base de datos en formato SQL, podemos crear un servidor Linux, instalarle MySQL / PhPMyAdmin e importar la base de datos, o directamente ejecutar un contenedor Docker desde una imagen con una instancia de MySQL precargada que hemos descargado desde los repositorios de Docker. Con tres comandos ya tenemos un servidor MySQL corriendo. Rápido, Sencillo y Eficiente.

Fig. Docker MySQL

A nivel de sistemas, nos hemos ahorrado mucho tiempo y tenemos la tranquilidad de que en cuanto terminemos de analizar la base de datos, eliminamos el contenedor y volvemos a tener un entorno completamente limpio. Si fuese una máquina virtual, podríamos usar “snapshots” o incluso plantillas, pero posiblemente necesitaríamos mucho mas espacio en disco para abrir una simple base de datos de un par de gigas de tamaño.

Fig. Ejemplo YAML Docker Compose para ELK

En otras ocasiones podemos necesitar montar una red de contenedores un poco mas compleja, por ejemplo si queremos desplegar un Elastic Search + Kibana, necesitamos descargar sus dos imagenes, crear una red común entre los dos contenedores y desplegarlos con los parametros adecuados, aunque esto no es muy complicado, siempre podemos hacerlo mas sencillo utilizado Docker Compose. Compose permite especificar los parámetros de funcionamiento y ejecutar varios contenedores Docker desde un solo fichero YAML en el que previamente se han establecido las condiciones de funcionamiento. La ventaja de Docker Compose, es que con un simple fichero YAML que hemos podido descargar de sus repositorios (¡OJO! con ejecutar YAML de origenes no confiables) y el comando «docker-compose up» tendremos nuestros servicios desplegados sin habernos despeinado.

¿Te ha gustado este artículo? Si quieres, puedes ayudarme a escribir el siguiente artículo de GLIDER invitándonme a un rico café.

 

Pulsa Aquí para invitarme a un café con hielo.

  Salu2.

Manuel Guerra

Mi nombre es Manuel Guerra. Investigador especializado en: [eCrime] | [Forensic] && [Hacking]. Editor de GLIDER.es

Navegación de la entrada


Comentarios

  • Rvs

    Me encanta! Comencé leyendo los artículos de Flipper Zero, y estoy enganchado!
    Es un placer leer de informática de manera tan ligera y amena. 😀
    Sigue así!
    Tu querido fan!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>