¿Qué es Docker y como puede beneficiar a tu negocio?

¿Qué es Docker?

Docker es una herramienta de código abierto que automatiza el despliegue de la aplicación dentro del contenedor de software.
La manera más fácil de obtener la idea detrás de Docker es compararla con, bueno… contenedores de envío estándar.

En aquellos tiempos, las empresas de transporte enfrentaban los siguientes desafíos:

Cómo transportar diferentes tipos (incompatibles) de mercancías lado a lado (como alimentos y productos químicos o vidrio y ladrillos).

Manipulación de paquetes de varios tamaños por el mismo vehículo.

Con la introducción de contenedor ahora los ladrillos se pueden poner sobre el vidrio, y los productos químicos se pueden almacenar junto a los alimentos. La carga de varios tamaños puede ser colocada dentro de un contenedor estandarizado que puede ser cargado/descargado por el mismo vehículo.

Volvamos a los contenedores en desarrollo de software.

Cuando desarrollas una aplicación, necesitas proporcionar tu código junto con todas las posibles dependencias como bibliotecas, servidor web, bases de datos, etc. Puede que acabes en una situación en la que la aplicación esté funcionando en tu ordenador pero ni siquiera empiece en el servidor de escenario, dev o una máquina de control de calidad.

Este reto se puede abordar aislando la aplicación para hacerla independiente del sistema.

¿Cuál es la diferencia de la virtualización?

Tradicionalmente se usaban máquinas virtuales para evitar este comportamiento inesperado. El principal problema con VM es que el “sistema operativo extra” en la parte superior del sistema operativo host añade gigabytes de espacio al proyecto. La mayoría de las veces su servidor albergará varias máquinas virtuales que ocuparán aún más espacio. Y por cierto, en este momento la mayoría de los proveedores de servidores basados en la nube te cobrarán por ese espacio extra. Otro inconveniente significativo de VM es un arranque lento.

Docker elimina todo lo anterior simplemente compartiendo el núcleo del SO a través de todos los contenedores que se ejecutan como procesos separados del SO host.

Tenga en cuenta que Docker no es la primera y no la única plataforma de contenedores. Sin embargo, actualmente Docker es la mayor y más poderosa herramienta del mercado.

Por qué necesito Docker?

La lista de beneficios es la siguiente:

  • Proceso de desarrollo más rápido. No hay necesidad de instalar terceros como PostgreSQL, Redis, Elasticsearch. Éstos se pueden utilizar en contenedores.
  • Práctica encapsulación de aplicaciones (puede entregar su aplicación en una sola pieza).
    Mismo comportamiento en la máquina local / dev / stage / stage / servidores de producción.
  • Monitorización fácil y clara.
  • Fácil de escalar (si usted ha hecho su aplicación correctamente estará listo para escalar no sólo en Docker).

Plataformas soportadas

La plataforma nativa de Docker es Linux, ya que está basada en características proporcionadas por el núcleo de Linux. Sin embargo, todavía puede ejecutarlo en macOS y Windows. La única diferencia es que en MacOS y Windows Docker está encapsulado en una pequeña máquina virtual. Actualmente Docker para macOS y Windows ha alcanzado un nivel significativo de usabilidad y se siente más como una aplicación nativa.

Además, hay muchas aplicaciones adicionales como Kinematics o Docker Machine que ayuda a instalar y operar Docker en plataformas no Linux.

Terminología

  • Contenedor – instancia de ejecución que encapsula el software requerido. Los contenedores siempre se crean a partir de imágenes.
  • Los contenedores pueden exponer puertos y volúmenes para interactuar con otros contenedores y/o el mundo exterior.
    El contenedor puede ser fácilmente eliminado/extraído y recreado de nuevo en muy poco tiempo.
  • Imagen – elemento básico para cada contenedor. Cuando usted crea una imagen, cada paso es almacenado en caché y puede ser reutilizado (modelo Copia en Escritura). Dependiendo de la imagen puede tomar algún tiempo para construirlo. Contenedores, por otro lado, pueden ser iniciados desde imágenes de inmediato.
  • Puerto – un puerto TCP/UDP en su significado original. Para mantener las cosas simples asumamos que los puertos pueden ser expuestos al mundo exterior (accesible desde el sistema operativo host) o conectados a otros contenedores – accesibles sólo desde esos contenedores e invisibles al mundo exterior.
  • Volumen – puede ser descrito como una carpeta compartida. Los volúmenes se inicializan cuando se crea un contenedor. Los volúmenes están diseñados para que persistan los datos, independientemente del ciclo de vida del contenedor.
  • Registro – el servidor que almacena las imágenes de Docker. Puede ser comparado con Github – puede extraer una imagen del registro para desplegarla localmente, y puede empujar imágenes construidas localmente al registro.
  • Docker hub – un registro con interfaz web proporcionado por Docker Inc. Almacena muchas imágenes Docker con diferentes programas. Docker hub es una fuente de las imágenes “oficiales” de Docker hechas por el equipo de Docker o realizadas en cooperación con el fabricante del software original (no es necesario que estas imágenes “originales” sean de fabricantes oficiales de software). Las imágenes oficiales enumeran sus vulnerabilidades potenciales. Esta información está disponible para cualquier usuario conectado. Hay cuentas gratuitas y de pago disponibles. Usted puede tener una imagen privada por cuenta y una cantidad infinita de imágenes públicas gratis.

Empezando con Docker

A continuación un a serie de vídeos que te ayudaran a empezar a conocer Docker.

Presentación sobre Docker: