DEV Community

loading...
Cover image for Introducción a docker y contenedores.

Introducción a docker y contenedores.

joselfonseca profile image Jose Luis Fonseca ・3 min read

Bueno, antes de cualquier cosa, debemos hablar un poco de que es docker. Para esto vamos a verlo de la siguiente manera.

Según Wikipedia:

“Docker es un proyecto de código abierto capaz de automatizar el despliegue de aplicaciones dentro de contenedores de software, proporcionándonos así una capa adicional de abstracción y automatización en el nivel de virtualización de sistema operativo sobre Linux.”

https://es.wikipedia.org/wiki/Docker

A partir de esta definición podemos interpretar que docker virtualiza el ambiente que necesitamos para nuestra aplicación utilizando contenedores sobre el kernel del sistema operativo, y debemos agregar que estos contenedores tienen sus procesos aislados del host donde se montan, pero que significa todo eso?

Para entenderlo mejor vamos a ver una comparación de los contenedores con las máquinas virtuales tradicionales.

En la imagen podemos ver como en el caso de la máquina virtual tenemos el sistema operativo HOST sobre el server, luego un Hypervisor y encima otro sistema operativo y cada una de las máquinas virtuales tiene librerías y por ultimo nuestra aplicación. Esto significa que tenemos varias capas que consumen recursos y no comparten nada. Al contrario de los contenedores donde no hay un Hipervisor sino un Docker Engine, no hay un sistema operativo completo corriendo encima del otro, hay librerías compartidas y encima nuestras apps o servicios aislados unos de otros. Todo esto se resume a una mejor utilización de recursos, mayor velocidad a la hora de subir contenedores aislamiento y separación de responsabilidades.

Todo esto nos da una serie de ventajas a la hora de trabajar con sistemas que necesitan muchos recursos y sobre todo que necesitan escalar

Para tener en cuenta!

Al compartir el kernel del sistema operativo HOST los contendores puedes ser vistos como menos flexibles ya que generalmente solo pueden correr un sistema operativo que sea el mismo o similar al del HOST. Por ejemplo se podría correr Red Hat en un servidor Ubuntu pero no Windows en ese mismo servidor. Sin embargo estas limitaciones no son tan importantes en la mayoría de casos.

Docker provee lo necesario para automatizar el despliegue de aplicaciones en contenedores y está diseñado para proporcionar un ambiente ligero y rápido en donde podemos ejecutar nuestro código, así mismo nos provee un flujo eficiente para llevar este código a ambientes desde nuestro computador local a testing o producción.

Imágenes

Las imágenes de docker son como los bloques de construcción del ecosistema, los contenedores se crean a partir de estas imágenes, ellas están construidas por capas usando Union File Systems, se construyen paso a paso usando una serie de instrucciones como por ejemplo:

  • Agregar un archivo
  • Correr un comando
  • Abrir un puerto

Estas imágenes se pueden extender de otras para ir agregando las cosas que necesitamos, por ejemplo podemos partir de Ubuntu y agregar PHP o Node, y cada que hacemos el paso a paso de construir dicha imagen se van creando nuevas capas que también pueden ser guardadas en cache para mejorar la velocidad de construcción de las mismas. Una ves tenemos la imagen, podremos crear contenedores a partir de ella.

Teniendo esto en cuenta, podemos decir que necesitamos crear imágenes con nuestra aplicación y todas sus dependencias para luego poder crear contenedores que serán los que funcionen en el HOST que servirá nuestra aplicación.

Pero esto no es todo, hay unos temas que son importantes:

  • Registries
  • Docker Compose
  • Docker Swarm
  • Docker client and Server
  • Docker orchestration
  • Sevice discovery

Entre otros….

Con esta breve introducción espero haberlos cautivado a investigar más sobre esta tecnología ya que estaremos realizando algunos ejercicios prácticos con diferentes lenguajes y herramientas.

Si deseas profundizar en las bases de docker, te recomiendo el libro https://www.dockerbook.com por JAMES TURNBULL que se puede adquirir en Kindle, PDF o ePub.

Discussion (0)

pic
Editor guide