Usando Docker – Parte I

Agradezco mucho la buena aceptación que tuvo el post anterior, donde presentaba el ¿por qué usar Docker?

Como lo prometido es deuda, me doy la tarea de enseñarles algunos temas básicos para introducirse a la utilización de Docker en el desarrollo. Si bien en el artículo anterior presenté Docker como la solución a varios problemas comunes que un programador novato puede encontrarse al configurar un entorno de trabajo, debo ser justo y contar que Docker es mucho más que eso y no solo va a solucionar esos problemas tan comunes, una definición correcta de esta herramienta es que es una herramienta para desplegar y usar contenedores, dentro de estos contenedores podemos configurar entornos a nuestro antojo y luego, una vez terminado nuestro desarrollo, usar la configuración de estos contenedores para desplegarlos en producción, sí, quizás suena muy maravilloso, pero sí, lo es.

Describamos un poco Docker, dentro de lo que yo conozco, tenemos el Docker Engine, que es el que eventualmente instalamos en nuestro equipo y es el encargado de gestionar los contenedores, por otro lado tenemos el Docker Hub, que es el repositorio público de Docker, donde podremos encontrar infinidad de contenedores para todos los gustos y ambientes.

Ahora sí, manos a la obra.

Primero, descarguemos el Engine e instalémoslo en nuestro equipo, dependiendo de tu S.O. descarga la versión que necesites: https://www.docker.com/get-started

Una vez instalado, veremos que el motor se inicia, lo podemos comprobar en nuestra barra de tareas con una luz verde, es probable que la primera vez nos pida algún permiso de administración o demore algunos minutos en iniciar, si estas con Windows 10 Home, te pedirá usar VirtualBox, en caso de usar Windows 10 Pro, debes habilitar desde la BIOS Hyper-V para que utilice la virtualización del S.O., en el caso de MAC no es necesario ningún otro sistema de virtualización.

 

 

Una vez iniciado, podemos entrar a PowerShell en el caso de Windows o al terminal en el caso de Mac, en el ejecutamos el comando “docker -v“.

 

Con ello ya tenemos la seguridad de que el sistema reconoce el comando Docker y además conoceremos la versión instalada.

Y listo, ya tienes Docker instalado en tu equipo, no esperabas montar un contenedor hoy, ¿cierto? Eso será en el capítulo 12 más menos, como The Walking Dead, que deja todo para el final de temporada (?), jaja.

Ok, sigamos.

Ahora aclaremos 2 conceptos importantes; primero, hablamos de gestionar contenedores, cierto, pero para que estos contenedores existan es necesario crearlos a partir de una imagen, la imagen es la copia base del contenedor y desde ella podremos desplegar tantas copias como necesitemos, entonces, vamos a montar nuestra primera imagen.

Volvemos al terminal, ejecutamos “docker images“.

En mi caso, ya tengo varias instaladas. Te comentaré que representa cada columna, REPOSITORY es el nombre de la imagen, TAG es la versión específica que tienes instalada de la imagen, si dice “latest” será la última disponible, IMAGE ID, es un ID único que se genera para tu máquina, este dato es importante, ya que será el identificador para manipular la imagen, CREATED y SIZE se explican por si solos.

Vamos a descargar nuestra primera imagen y levantar el primer contenedor…

Abrimos el terminal y escribimos “docker pull mysql“, sí, vamos a descargar una imagen de MySQL.

Esperamos a que termine, y una vez finalizado, ejecutamos nuevamente “docker images” y veremos nuestra nueva imagen con su IMAGE ID en la pantalla. Ahora manteniéndonos dentro del terminal, ejecutaremos “docker run – -name minombre -e MYSQL_ROOT_PASSWORD=miclave -d mysql:latest“, este comando lo puedes encontrar en el repositorio oficial de MySQL en Docker Hub https://hub.docker.com/_/mysql/

Te explicaré un poco el comando:

docker run: le decimos a docker que ejecute una nueva instancia de la imagen.

– -name minombre: estoy asignando un nombre personalizado al nuevo contenedor

-e MYSQL_ROOT_PASSWORD=miclave: estoy indicando un parámetro en donde en este caso indico la clave de root del motor

-d mysql:latest: indico el nombre de la imagen que va a desplegar y con el tag estoy señalando qué versión desplegar, en caso de que tenga varias

Y listo, ahora ejecuto “docker ps” y veré que mi nuevo contenedor está vivo con los parámetros indicados, importante notar la columna CONTAINER ID, pues la usaremos para acceder al contenedor.

Ok capitán, el contenedor está abordo y operativo, ¿cómo lo comprobamos? Pues, ejecuta “docker exec -it a0dd8316725f bash”, con eso le digo a Docker que ejecute un bash para ese ID de contenedor, con ello estoy dentro del contenedor como que estuviese accediendo a un VPS. Prosigamos, estoy dentro del contenedor y puedo ejecutar un comando directamente, por ej: “mysql -u root -pmiclave” para conectarme a MySQL y sí señora, sí señor, conectados al servidor y por ej. listo a los usuarios y me responde la consulta:

¿Magia? no, configuración correcta y un trabajo limpio. Esto es Docker, una herramienta para manipular nuestro entorno de desarrollo a necesidad, sin tener que generar una dependencia al S.O. base y en la cual podemos generar tanta pruebas o manipulaciones como queramos, generando copia de los contenedores u otros detalles.

¿Se cansó y quiere apagar el contenedor? Entonces “docker stop a0dd8316725f” y a dormir.

Espero que les haya servidor este tutorial, sé que salió un poco largo y quizás es medio intenso en información, pero puede leerlo cuantas veces necesite para ahondar en esta herramienta.

Si seguimos con la buena aceptación posteriormente podemos revisar 2 temas relevantes, ¿cómo generar una imagen personalizada? y ¿cómo manipular los contenedores con un entorno gráfico?

Hasta la próxima.

Más contenido