Introducción a Docker



¿Qué es Docker?

Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de virtualización a nivel de sistema operativo en Linux. (Tomado de Wikipedia). 

¡Sí!, sé que luego de leer la definición anterior no te quedo claro probablemente, Docker es un software que te permite crear “contenedores” a partir de “imágenes” dentro de los cuales puedes colocar prácticamente cualquier cosa: servidores de aplicaciones, de base de datos, servidores de repositorios, etc. Lo que se te ocurra. 

Contenedor


Un contenedor como tal, es una especie de máquina virtual dentro de tu computadora anfitrión, pero no es del todo una máquina virtual como lo clásico de Virtual Box pues usa un minino de recursos.

Imágenes


Son contenedores de Docker empaquetados, ya configurados listos para ser desplegados. Puedes bajar una imagen, hacerle cambios y volverlo a compilar en Imagen. 

  • Juntando estos 2 conceptos, debes de saber que el usar Docker te da los siguientes beneficios: 

    Usan el mínimo de recurso, tienen su propio kernel pero su peso para ejecutarse es ridículamente mínimo. Podrías tener un Ubuntu funcional por menos de 50Mb, listo para que lo configures con lo que desees.

  • Son portables. ¡Los contenedores pueden empaquetarse en “Imágenes” las cuales puedes simplemente copiar a una USB, lo llevas a otra PC que tenga docker y la vuelves a desplegar y listo! Tienes el mismo ambiente con las mismas configuraciones. Pasar de ambiente de Desarrollo, a Calidad, a Producción nunca fue tan sencillo.

  • Puedes levantar servidores en cuestión de segundos (dependiendo de la capacidad de la PC anfitrión), necesitas un MySQL, un SQL Server 2012, un PostgreSQL o un Glassfish o un Tomcat, no importa. Puedes tener uno de estos servidores construido y listo para usarse sin 1 solo error y sin el trabajo complicado de bajarlo, instalarlo y configurarlo. Ya existen las imágenes de casi todo los servidores listas para ser desplegadas, visita Docker Hub para que conozco que imágenes existen ya configurados para que puedas usarlo: https://hub.docker.com/

  •  Arma arquitecturas tan complejas, orquestando diversos contenedores. Puedes conectar tu contenedor de base de datos a otros contendores para crear servidores espejos (master - slave) y esta es solo una ideaNo dañas tu sistema principal. Comúnmente luego de desinstalar algún servidor nuestras PC quedan de alguna forma "sucias" lo que nos puede traer problemes en el futuro. Con Docker olvídate de esto, crea un contenedor de diversas sistemas y servidores y elimínalos cuando gustes y tu sistema principal no se dañará en lo más mínimo. 

 

¿Cómo inicio en Docker?


  1. Instalar DockerDocker está disponible para las 3 plataformas de sistemas operativos típicos: MAC, Windows y Linux. Siendo en Linux su comportamiento más nativo y con menos carga sobre el sistema anfitrión, aunque funciona muy bien en los demás ambientes. 

    Te dejo el link para que puedas consultar, como hacer este proceso de acuerdo a tu sistema operativo: https://docs.docker.com/engine/installation/ 
  2. Crear un contenedor: vamos a crear un contenedor, algo muy típico, instalar un contenedor MySQL, de acuerdo a la documentación oficial de este contenedor (https://hub.docker.com/_/mysql/) solo debemos ejecutar la siguiente instrucción a nuestra terminal:Te explico un poco, que contiene esa sentencia:

     docker run --name mi-mysql –p 4040:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:latest

                                                                                                                                                                                                                                                                                                                                      Te explico un poco, que contiene esta sentencia.                                                                                                                                                                                                                                                 • run = con esto le decimos que queremos ejecutar un contenedor

     

     • --name = le indicamos el nombre del contenedor

     

     • -p = le indica a Docker que debe de abrir el puerto 4040 del lado anfitrión y conectarlo al puerto 3306, es decir que tu MySQL estará corriendo sobre el puerto 4040, aunque el contenedor creerá que es en el puerto 3306 donde esta, el realizar este proceso se le conoce como “Port Forwarding” y de ese proceso se encarga Docker.

     

     • -e = esta flag le indica a docker que vamos a colocar una valor a una variable de ambiente, en esta caso a “MYSQL_ROOT_PASSWORD”

     

     • -d = le indica a docker que el contenedor a crear lo vamos a correr con la capacidad de ejecutarse en segundo plano, es decir poder dejarlo corriendo, sino le especificamos esto, docker crear el contenedor y nos dara acceso al bash del contenedor y al salirnos de ese bash, docker destruirá el contenedor

     

               • mysql:latest = esto le indica a docker cual es la imagen de la cual debe de crear el contenedor, en este caso “mysql” luego del nombre de la imagen va “:” con lo cual le indicamos la versión            del contenedor, en nuestro caso, ocupo la palabra reservada “latest” que le indica, que quiero crear de la ultima versión de la imagen.                                                                                                                         

  3. Conectarnos a nuestro Servidor: Utiliza cualquier cliente de MySQL y ahora abre tu conexión clásica, hacia “localhost” con el puerto “4040”, usuario “root” y el password es el que hayas colocado en tu variable MYSQL_ROOT_PASSWORD. ¡Y listo!

Podemos conectarnos al bash de nuestro terminal, con el siguiente: 

                                              docker exec –tiu 0 mi-mysql bash


 Y dentro de nuestro bash podemos realizar cualquier proceso como instalar algún software dentro de nuestro contenedor. Aunque recomendamos seguir la siguiente norma: 

                                               1 Contenedor = 1 Servicio

 Puedes seguir consultando más sobre esta gran tecnología en la documentación oficial, te dejo el enlace a continuación: 

https://docs.docker.com/get-started/

 

¡Nos seguimos leyendo!

Escriba un comentario

Usted debe ser registrado escribir un comentario.