Categorías
Linux

Virtualización por contenedores: Docker

Si sois desarrolladores y no estáis trabajando con entornos virtualizados os recomiendo que, poco a poco, adoptéis esta tecnología ya que os ayudará de forma infinita en el proceso. Ya hemos hablado de alternativas de virtualización completa (Vagrant, VMWare o Virtualbox) e incluso cómo existen proyectos que las aplican a escenarios concretos como Wocker. Este tipo de soluciones, llamémosles «clásicas», simulan o virtualizan un entorno completo (un sistema operativo en la mayoría de los casos), por lo que en muchas ocasiones esta forma de virtualizar es «matar moscas a cañonazos» y nos limitará los sistemas que podemos virtualizar a unos pocos por equipo por falta de recursos. Para solucionar esto disponemos de soluciones como Docker, un sistema de virtualización por contenedores con el que podremos llegar a virtualizar cientos de servicios en el mismo equipo sin problema. De hecho, en múltiples ocasiones se usa Docker sobre un sistema virtualizado con Virtualbox/Vagrant/VMWare para aprovechar lo mejor de los dos mundos (Backup, migración y escalado en imágenes virtuales y ligereza, portabilidad y adaptabilidad de Docker).

Docker

El concepto de Docker usa como base conceptual la misma que se usa en los barcos de transporte de contenedores (de ahí su nombre, logo…): tenemos una máquina muy potente, en el concepto sería el barco, con un montón de espacio, motores y fuerza (en el caso de un sistema informático podría ser un servidor físico o una imagen virtualizada en una de las soluciones clásicas). Ahí, en lugar de hacer a ese barco arrastrar otros barcos (Lo que sería una virtualización completa) lo que hacemos es cargarlo con contenedores independientes (cada uno puede ser de diferentes tamaños y colores, cargar diferentes materiales…).

Sé que los más puristas se me estarán tirando al cuello pero creo que es una imagen bastante fácil de identificar y que nos ayudará a tener claro el concepto. Iremos entrando en detalle en un futuro sobre las bondades, características y formas de trabajo de este sistema de contenedores pero por ahora quedaros con el concepto de que es rápido, portable, ágil e inmutable. Además, funciona exactamente igual en Windows, Linux o Mac.

Y como dirían los ingleses: «first things first» asi que vamos a instalarlo en nuestro sistema.

Instalación de Docker

Me centraré en la instalación en Ubuntu (versiones mayores o iguales a 14.04, siempre mejor LTS) por ser mi sistema base de trabajo diario aunque la instalación está bastante bien explicada en su documentación oficial.  En Mac y Windows incluso disponemos de alguna utilidad a mayores (como Docker-Machine) aunque personalmente prefiero Linux.

Importante: Docker está en los repositorios oficiales de Ubuntu pero es una versión antigua y sin soporte oficial. Lo mejor es instalarlo siguiendo estos pasos o desde la documentación para tener todo al día.

Lo primero es actualizar nuestros repositorios apt, actualizar nuestro sistema (siempre recomendado) e instalar los requisitos:

Ahora toca añadir la clave y el repositorio oficial:

Simplemente tendréis que cambiar la «ubuntu-xenial» por lo que necesitéis en vuestra distro («ubuntu-trusty» para 14.04 por ejemplo).

Actualizamos e instalamos:

Ya tenemos Docker disponible en nuestro sistema, podemos comprobarlo con:

Configuración de usuarios

Por defecto el demonio de Docker sólo es accesible al usuario administrador (root) pero lo ideal es poder acceder a él con nuestro usuario. Para ello sólo tenemos que crear el grupo «docker» (normalmente ya existe) y añadir nuestro usuario a él:

Cerramos sesión y volvemos a entrar y tendremos Docker accesible sin usar «sudo» ni el usuario del sistema.

No tiene más ciencia… pero si tenéis cualquier duda dejadme un comentario aquí, en Twitter o en Facebook y estaré encantado de ayudaros.