Recurso 1
Qué es Docker y para qué sirve

Qué es Docker y para qué sirve

Docker está transformando la forma en que se desarrolla, distribuye y ejecuta el software. La ventaja: podemos encapsular todo el entorno para pasarlo a producción con las mismas características.

Docker es un proyecto de código libre que se ha convertido en uno de los términos de moda por las ventajas que proporciona, entre otros, a los profesionales del desarrollo web y de aplicaciones, o los administradores de sistemas, por la facilidad que supone el trabajar con el concepto de contenedores.

Docker está transformando la forma en que se desarrolla, distribuye y ejecuta el software. La ventaja es muy evidente, podemos encapsular todo el entorno de trabajo de manera que los desarrolladores saben que pueden estar trabajando en su servidor local, con la seguridad de que, al llegar el momento de ponerlo en producción, van a estar ejecutándose con la misma configuración sobre la que se han hecho todas las pruebas.

De esta forma, vamos a poder reducir los tiempos de testeo y adaptaciones al hardware del que se dispone en el entorno de producción.

Docker nos ayuda a no malgastar nuestro tiempo configurando el entorno, y las dependencias del sistema, porque lo vamos a poder desplegar fácilmente. Algo muy útil tanto para grandes empresas, como Red Hat o Google, como para las pequeñas startups que empiezan a desarrollar su aplicación.

Haciendo historia

El concepto de contenedor se inició en la plataforma Unix, de donde saltó a Linux. Docker, partiendo de Linux, ha logrado simplificar y convertirse en una tecnología flexible y fácil de utilizar para trabajar con contenedores.

La analogía con la industria del transporte es muy ilustrativa y muestra el camino futuro en el desarrollo de software. Hace décadas la industria del transporte se reunió para crear un contenedor intermodal.

Esta es la razón por la que los contenedores, en la actualidad, tienen unos tamaños estándar, y se desarrollaron para que fueran fáciles de mover entre diferente tipos de transporte (barcos, trenes, camiones), sin importar el producto que contuvieran. Parte de la globalización se explica con cambios como estos.

Las diferencias entre Docker y las máquinas virtuales

Aunque, por su naturaleza, se asemejan a las clásicas máquinas virtuales, estamos hablando de algo más avanzado porque nos ofrecen una mayor eficiencia y sencillez.

  • Para empezar, los contenedores de Docker comparten recursos con el sistema operativo sobre el que se ejecutan. De esta manera podemos arrancar o parar el contenedor rápidamente, mientras que máquinas virtuales, como Vmware, Citrix o Virtualbox, se aíslan del sistema operativo sobre el que trabajan y se comunican a través del hypervisor.
  • La portabilidad de los contenedores hace que los problemas causados por cambiar el entorno donde está corriendo la aplicación se reduzcan a la mínima expresión.
  • Si las máquinas virtuales quieren simular el entorno diferente al nuestro, el container de Docker se centra en crear la aplicación y que se pueda portar todo el contenido de manera sencilla.

Docker container engine

El container engine es el responsable de iniciar y parar los contenidos de una manera similar a como lo hace el hypervisor en una máquina virtual.

Los procesos que corren en el contenido son equivalentes a los procesos nativos en el host.

Docker hub

Docker hub es un repositorio público en la nube, similar a Github, para distribuir los contenidos. Está mantenido por la propia Docker y hay multitud de imágenes, de carácter gratuito, que se pueden descargar y asi no tener que hacer el trabajo desde cero al poder aprovechar “plantillas”.

También podemos crear nuestros propios repositorios privados e, incluso, dispone de una tienda.

Docker hub

Docker se ha convertido en el estándar de facto

En 2015 se extiende la Open container initiative y acaba de desbancar a otras propuestas existentes como:

Docker como respuesta a las necesidades de hoy en día

Lejos queda, por ejemplo, trabajar en entornos tan controlados como el típico LAMP. Hoy en día hay variedad de frameworks, como Angular JS, NOSQL, Rest API que te permiten crear servicios en la nube, que tienen muchas dependencias que son necesarias instalar para desarrollar.

Además, los profesionales, hoy en día, trabajan desde cualquier ordenador.

a lo que se suma el entorno de la máquina de testing y, finalmente, al entorno de producción.

Cada uno de estos entornos puede tener varias configuraciones:

  • Diferentes sistemas operativos
  • Versión de las librerías
  • Con Docker, como vemos, nos permite ahorrar el tiempo que podemos aprovechar para lo más importante, trabajar en nuestras aplicaciones.

Instalación de Docker

Puedes utilizar varios sistemas operativos de escritorio:

Y, por supuesto, en cualquier versión para servidores Ubuntu Server, Fedora, CentOS, Debian, Oracle Linux, etc.

También para sistemas Cloud como Amazon Web Services o Azure de Microsoft

Tanto las instalaciones como las actualizaciones posteriores son muy sencillas.

Docker starting

Una vez instalado solo queda arrancar la aplicación Docker.

Docker starting

Puedes gestionar los recursos que vas a utilizar, por ejemplo, la memoria RAM o el número de procesadores de una forma muy fácil.

Docker Settings

Para chequear que todo funciona correctamente podemos ir a la línea de comandos y pedir la versión que tenemos instalada con el comando: docker version.

 $ docker version

Una vez que ya lo tenemos, se nos abren infinitas posibilidades para instalar entornos de trabajo de acuerdo a nuestros intereses por el desarrollo.

Podemos empezar trabajando en la última versión Ubuntu para ver “la magia”. Primero comprueba que no tengamos ya instalada la imagen de Ubuntu en nuestro Docker y, si no, empezará a descargar todos los paquetes que necesita para empezar a trabajar.

$ docker run -i -t ubuntu:latest /bin/bash

Docker install ubuntu latest

En el caso de Ubuntu, en pocos segundos lo tendremos listo para empezar a trabajar porque el propio Docker ya se basa en Linux, con lo que gran parte se va a reaprovechar.

Una vez acabada la descarga, si listamos para ver los ficheros y carpetas, podremos ver que ya estamos dentro de un sistema operativo Ubuntu

$ ls

Docker ubuntu consola clear

Como ves, las posibilidades son inmensas, desde trabajar con un servidor Nginx o Apache en un momento, a lenguajes de programación web como PHP o NodeJs.

Aquí tienes dos libros en los que te puedes apoyar para sacarle el máximo rendimiento a Node: DOCKER. Guía práctica de Alberto González y Docker in Action de Jeff Nickoloff.

¿Te apuntas a desarrollar de forma más eficiente?