3.1 Portainer. Gestión de contenedores
Imagen obtenida de https://www.portainer.io/
Esta herramienta sirve para...
Gestionar los distintos contenedores, imágenes, stacks,... que tengamos en nuestra Raspberry Pi a través de un entorno gráfico en lugar de hacerlo a través del terminal del sistema operativo. Cuenta con una versión BE (Business Edition) y otra CE (Community Edition), usaremos la 2ª.
Web de proyecto y otros enlaces de interés
Página web oficial: https://www.portainer.io/
Repositorio de la versión CE en github: https://github.com/portainer/portainer
Documentación del proyecto: https://docs.portainer.io/
Despliegue
Si crees que instalar portainer del modo que a continuación se explica es complicado puedes instalarlo a través del método que explicamos en el capítulo 3.3 Linux Media Delivery System (LMDS). No te librará de utilizar la terminal pero quizás te resulte mas amigable.
En la propia documentación podemos encontrar como desplegar Portainer ( https://docs.portainer.io/start/install-ce/server/docker/linux ). Vamos a recopilar aquí qué hay que hacer y explicar los comandos
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
En la primera línea creamos un volumen llamado portainer_data
En la segunda línea lanzamos, desplegamos un contenedor:
- -d (--detach): Ejecuta un contenedor en segundo plano.
- -p (--expose): Nos permite indicar qué puerto del contenedor se corresponde con qué puerto de la máquina anfitriona.
- --name: Nos permite establecer el nombre del contenedor.
- --restart: Nos permite establecer qué queremos que ocurra en caso de que el contenedor falle. En este caso establecemos que se reunicie siempre.
- -v (--volume): Nos permite mapear rutas del contenedor con rutas de la máquina anfitriona.
- El último parámetro que aparece en la ruta
portainer/portainer-ce:latest
es la imagen que se va a ejecutar.
Visto y explicado cómo realizar la instalación según indica la documentación oficial, nosotros/as vamos a hacerlo de otro modo.
La forma que hemos visto con anterioridad funciona. Podéis usarla sin ningún problema. Ahora bien, dado que en este curso desconozco el nivel de partida de cada compañero/a que lo cursa voy a optar por utilizar un modo de despliegue semejante para cada servicio y, por ello, voy a hacer uso de docker-compose. Vamos allá:
Para ello accedemos al terminal y escribimos lo siguiente:
cd $HOME
mkdir portainer
cd portainer
nano docker-compose.yml
Dentro del fichero escribimos el siguiente contenido:
version: '2'
services:
portainer:
container_name: portainer
image: portainer/portainer-ce
restart: unless-stopped
ports:
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./volumes/data:/data
Para salir del fichero pulsaremos control + x
y guardaremos los cambios. Posteriormente ponemos en marcha los contenedores con docker compose up -d
Aparecerá en pantalla algo similar a
Elaboración propia
Si queremos comprobar que el contenedor está en marcha podemos ejecutar docker ps --all
lo que nos mostrará todos los contenedor que hay en la máquina. Si queremos ver si, concretamente, está disponible el que acabamos de crear podemos ejecutar docker ps --all | grep portainer
. Obteniendo unos resultados similares a los siguientes:
Elaboración propia
También podemos tratar de acceder a la interface gráfica a través de un navegador web. Para ello accedemos a través del navegador la Raspberry Pi y al servicio Portainer del siguiente modo http://<IP>:puerto
en mi caso tengo configurada la raspberry Pi con la IP 192.168.0.201
y portainer con el puerto 9000
por lo que escribo http://192.168.0.201:9000
y así accedo a la interface web de portainer.
Elaboración propia
Funcionamiento
En el resto del curso el despliegue de los distintos servicios lo haré siempre a través de comandos pero debes saber que con esta herramienta puedes hacer lo mismo en un entorno gráfico.
Como ya indicamos en la introducción esta herramienta es una interface web para docker lo cual facilitará enormemente la vida a aquellas personas que no estén acostumbradas a trabajar desde una interface de texto (terminal).
Nada mas acceder veremos una imagen como la que hemos visto un par de párrafos más arriba en ella podemos gestionar los usuarios, entornos, logs, parámetros de configuración... de este primer menú lateral no voy a comentaros nada. Si pinchamos en local veremos una imagen como la siguiente:
Elaboración propia
En la misma os he remarcado 4 zonas:
- zona 1 (verde): Tenemos acceso a los diferentes contenedores, imágenes, redes y volúmenes de nuestro entorno local.
- zona 2 (azul claro): Acceso a las mismas secciones que teníamos antes de entrar en el entorno local.
- zona 3 (rojo): Información del entorno.
- zona 4 (morado): Similar a la zona 1 con algo de información adicional.
Si accedemos a, por ejemplo, Containers
tendremos un listado de todos los contenedores descargados:
Elaboración propia
Dónde podemos ver si hay contenedores detenidos, fallando, sanos,... también podemos acceder al detalle de cualquiera de ellos y dentro del detalle detenerlo, reiniciarlo, pausarlo, borralo,... ver los logs, acceder al terminar del contenedor,... todo ello sin necesidad de conocer los comandos docker que hay por detrás:
Elaboración propia
Elaboración propia
Es bastante probable que nunca tengáis que recurrir a estas opciones pero si en alguna ocasión las necesitáis no tendréis que buscar que con docker logs nombre_del_contenedor --follow
podéis hacer lo mismo que haciendo 4 clicks.
Acceder a las secciones de Images
o Volumes
nos puede resultar muy útil para de un vistazo ver, respectivamente, que imágenes o volúmenes no están en uso y así borrarlas para que dejen de ocupar espacio en nuestro disco duro.
Elaboración propia
Además, por si fuera poco, nos agrupa los contenedores por stacks de modo que nos facilita ver si los contenedores asociados a un determinado servicio (hay servicios que pueden requerir el funcionamiento de mas de 1 contenedor) están operativos o no.
Elaboración propia
Elaboración propia
Y, ya para terminar pero no por ello menos importante, nos ofrece también la posibilidad de crear contenedores a partir de plantillas de aplicaciones preexistentes. Esta funcionalidad puede permitirnos desplegar servicios en segundos sin conocer ni un solo comando de docker (si bien no es lo deseable):
Elaboración propia
Como nos ocurrirá en servicios posteriores, esta herramienta podría dar por si misma para un curso dedicado. Os presento aquellas cuestiones que me parecen mas relevantes a fin de que seáis capaces de continuar vosotros/as desde este punto de partida.
No Comments