_Logo

Hace unos días, en un hilo de la cuenta de Twitter y en uno de los Livestream que hice en nuestro canal de Youtube conté que me quería enfocar en aprender a usar Docker, éste sistema de contenedores en el que uno puede (sin virtualizar) utilizar servicios independientemente del sistema operativo gracias a ésta tecnología llamada “de contenedores” la cual a partir de una “imagen” de un servicio (incluso puede ser una distro linux) uno genera éste contener el cual puede darle ciertas características para poder utilizarlo.

Esta tecnología se está usando mucho (muchísimo) en el ambiente de DevOps y a su vez en la comunidad de usuarios de RaspberryPi ( y otras plaquitas) para sacarle el mayor provecho posible a éstas microcomputadoras que tanto amamos.

Y como un recorrido se empieza por dar el primer paso, vamos a instalar Docker en nuestra RaspberryPi de una forma super sencilla:

$ curl -sSL https://get.docker.com | sh

Una vez que tenemos docker instalado podemos probarlo con un simple sudo docker run hello-world. Si vemos el mensajes “Hello from Docker” es que está todo correctamente instalado.

Lo más positivo que le veo a Docker y, es una gran ventaja para que el trabaja en todo momento con servicios, es que los contenedores pueden ser totalmente volátiles, es decir, uno puede generar un contenedor con ciertos parámetros para que haga tal o cual cosa y vaya obteniendo datos, pero si uno no genera un volumen para que esos datos sean persistentes, los mismos se pierden. Eso es una gran opción para personas que quieran probar un servicio de determinada manera para saber como se comporta de cierta forma y demás. Muy bueno.

Ahora podremos crear los contenedores que querramos. Lo que vamos a hacer es instalar Portainer, un administrador de contenedores, imágenes y demás, super completo que nos ahorra muchos pasos sobre todo si no queremos o no podemos usar una terminal para administrar nuestros servicios en Docker.

1) Generamos el volumen para portainer:

$ docker volume create portainer_data

2) Generamos el contenedor de Portainer y lo ejecutamos:

$ docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Algunas explicaciones de los parámetros:

-d: El servicio queda ejecutado en segundo plano -p: Puerto asignado al servicio para que sea accedido de forma local –name: Nombre del contenedor creado. Si no se le da un nombre Docker le asigna uno random (al estilo de “goody_waves”). Es conveniente darle un nombre a nuestro contenedor mas que nada por temas organizativos. –restart: Opción para que el contenedor se reinicie en el caso que, por ejemplo, se vaya la luz. -v: Ruta en el que se encuentra el volumen para dicho contenedor

Una vez que ejecutamos el comando run para éste contenedor, ya vamos a tener Portainer funcionando. Como le dimos el puerto 9000 para ingresar lo que tenemos que hacer es abrir un navegador web desde cualquier dispositivo e ingresaremos a la URL de Portainer del estilo IP.DE.TU.RASPBERRY:9000. Una vez abierta la página de configuración de Portainer, vamos a agregar el usuario administrador dándole un nombre y una contraseña. Y Listo!!

Cabe aclarar que Portainer en modo standalone solo soporta Docker Compose versión 2, en caso de tener Compose en la versión 3 se debe de implementar Swarm en Docker. (Conceptos que veremos más adelante. Gracias David García del grupo de Telegram DockerES por el aporte).

Página principal en el que vamos a poder elegir los diferentes ambientes en el caso de tener contenedores en un host aparte:

_Logo

El Dashboard con los diferentes servicios funcionando:

_Logo

Las imágenes descargadas para crear los diferentes contenedores (en éste caso solo la de Portainer):

_Logo

Los contenedores creados, su estado actual y más información:

_Logo

El propósito de éstos posts van a ser tratar de migrar los diferentes servicios que tengo en mi RaspberryPi a Docker para así poder tener un manejo mucho más completo de los mismos. Espero que les guste y si es así que difundan la información.


No olviden seguirnos en las redes sociales: