¿Por qué usar Docker?

Docker nos permitirá crear un entorno ejecutable con la versión exacta de las diferentes bibliotecas requeridas por la aplicación o el servicio, las herramientas del sistema y los archivos de configuración necesarios. Todo ellos sin afectar a nuestro equipo huésped porque se ejecutará de manera aislada.

Objetos de Docker

Cuando se usa Docker, se están creando y usando imágenes, contenedores, volúmenes, redes, plugins y otros objetos. A continuación se describen algunos de esos objetos:

Imágenes (images)

Una imagen en Docker es la representación estática de una aplicación o servicio con su configuración y todas sus dependencias. Las imágenes se utilizan para crear contenedores, y nunca cambian.

Por ejemplo una imagen podría contener un sistema Ubuntu con un servidor Apache y una aplicación web.

Registro (registry)

Las imágenes pueden almacenarse localmente o remotamente en un repositorio conocido como registro, donde están disponibles por nombre y normalmente en diferentes versiones etiquetadas, por ejemplo ubuntu:latest o mysql:5.7.

Es posible crear un registro privado, pero también pueden usarse registros públicos. El más utilizado es Docker Hub, un repositorio en la nube para crear, probar, guardar y distribuir imágenes. También proporciona a los usuarios un espacio para crear repositorios privados, automatizar funciones de compilación, crear webhooks o compartir espacios de trabajo.

Contenedores (containers)

Los contenedores ejecutan instancias de las imágenes. Al ejecutar una imagen se crea un contenedor.

A partir de una única imagen podríamos ejecutar varios contenedores. Por ejemplo, sería posible tener una misma aplicación ejecutándose en varios contenedores, y usar balanceadores de carga para distribuir los accesos y ofrecer servicios con más garantías y menos carga de peticiones en cada contenedor.

Como las imágenes no cambian, las modificaciones realizadas durante la ejecución de un contenedor no serán persistentes al detenerlo y volver a ejecutarlo. Pero es posible crear una nueva imagen, una nueva versión, con los cambios realizados. Y si algo va mal podríamos volver de forma sencilla a una versión anterior del contenedor.

Almacenamiento (storage)

Los ficheros creados dentro de un contenedor no persisten entre ejecuciones. Docker proporciona dos mecanismos para que un contenedor almacene archivos en la máquina huésped y persistan después de detenerlo:

Volúmenes (volumes)

Son el mecanismo preferido para mantener la persistencia de datos. Es posible definir volúmenes en modo «sólo lectura». Y volúmenes que pueden compartirse por más de un contenedor, algunos en modo «lectura/escritura» y otros en modo «sólo lectura».

Puntos de montaje (bind mounts)

Tienen una funcionalidad limitada en comparación con los volúmenes. Permiten montar un fichero o directorio de la máquina huésped en el contenedor. Son muy efectivos, pero se basan en el sistema de ficheros de la máquina huésped y la estructura específica del directorio disponible.

Última revisión: 18/05/2020