En la web hemos hablado largo y tendido sobre los contenedores Docker. En el caso de hoy hablaremos de Portainer. Se trata de una interfaz de usuario web que nos permite administrar fácilmente nuestro host Docker y todos los contenedores que en él habitan.

Portainer tiene como una de sus ventajas principales su facilidad de uso. Consiste en un solo contenedor que puede ejecutarse en cualquier motor de Docker, tanto en GNU/Linux como en otros sistemas, como Microsoft Windows.

Con esta herramienta podemos administrar las pilas de Docker, los contenedores, las imágenes, volúmenes y redes. Es compatible con Docker CE, Docker EE y Docker Swarm.

Despliegue de Portainer

Ya hemos dicho que el producto se encuentra dentro de un contenedor así que podemos desplegarlo igual que cualquier otro Docker.

docker volume create portainer_data
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

Podemos indicarle a Docker un volumen, seleccionado por nosotros, donde se guardará la información:

docker run -d -p 9000:9000 --name portainer --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /path/on/host/data:/data portainer/portainer

Otra opción interesante, que es la que he utilizado yo, es usar Docker Compose, herramienta de la que ya hablamos en otro artículo.

Antes de continuar quiero comentar que, para que los datos sean permanentes al apagar y encender el contenedor, he utilizado un recurso NFS, exportado desde una cabina NAS de la marca Synology que tengo por casa. He montado el recurso sobre el FS /var/lib/docker/volumes.

Si tenéis dudas respecto al almacenamiento en Docker podéis consultar el artículo que escribí sobre este sistema de contenedores dentro de esta misma serie.

Una vez aclarado esto, utilizaremos la plantilla de guión incluida en la documentación oficial, que es esta:

version: '2'

services:
  portainer:
    image: portainer/portainer
    ports:
      - "9500:9000"
    command: -H unix:///var/run/docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

volumes:
  portainer_data:

Guardamos el fichero con el nombre docker-compose.yml y ejecutamos:

docker compose up -d

Esto lo debemos ejecutar en la misma ruta donde tengamos el fichero con extensión YML.

En el fichero, además, indicamos el puerto que utilizará el contenedor. Debe estar accesible en el host. En mi caso estoy utilizando Centos 7, por lo que, para abrir dicho puerto, escribiremos:

firewall-cmd --permanent --add-port=9500/tcp
firewall-cmd --reload

NOTA: En la plantilla viene por defecto el puerto 9000 pero yo lo estoy utilizando para otro servicio web. Por eso, en la exposición, le indico que se redirija hacia el 9500.

Respecto al asunto de la exposición de puertos también tenéis un artículo ya escrito sobre el tema en Colaboratorio.

Si todo ha ido bien veremos el contenedor funcionando:

[root@servicinga davidochobits]# docker-compose up -d
Creating davidochobits_portainer_1 ... done

Comprobamos la información que nos muestra el comando docker ps, así:

[root@servicinga davidochobits]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS              PORTS                    NAMES
ef9e141a5af6        portainer/portainer   "/portainer -H unix:…"   About a minute ago   Up About a minute   0.0.0.0:9500->9000/tcp   davidochobits_portainer_

Así que ya podemos escribir en el navegador web la dirección IP de nuestro equipo o servidor más el puerto indicado.

Configuración de Portainer

Al acceder vía web por primera vez nos pedirá configurar la contraseña del usuario administrador, tal y como se muestra en la imagen:

Primer acceso a Portainer

La contraseña debe tener, por lo menos, ocho caracteres.

Una vez ya hemos configurado esa parte, en el siguiente paso ya podemos ver la interfaz de Portainer propiamente dicha.

Interfaz de Portainer

Vemos en la imagen que solo tenemos un nodo de Docker, que es el primario. Además, nos da la información de sus volúmenes, imágenes y contenedores, tanto los que están parados como los que funcionan.

Si marcamos sobre el nodo primario se nos mostrará el siguiente panel de control:

Panel de control de Portainer

La verdad es que este producto da mucho juego. Podemos gestionar prácticamente todas las operaciones: descargar imágenes, crear contenedores, gestionar volúmenes, redes, puertos…

Para mostrar brevemente su funcionamiento nos podemos descargar una plantilla de contenedor ya predefinida desde “Add Templates“. En el ejemplo vamos a utilizar la plantilla para instalar la popular herramienta de control de versiones GitLab.

Seleccionamos la plantilla de contenedor para GitLab

Una vez seleccionada y elegido el nombre le debemos asignar una red, volúmenes y los puertos que expondremos. En mi caso, el puerto 80 lo he redireccionado al 9080 y lo mismo con el resto, el 443 al 9443 y el 22 al 9022.

Una vez desplegado, el contenedor es visible en el apartado “Containers

Lista de contenedores disponibles

Para acceder al nuevo contenedor sería, en mi caso: http://ip-de-servidor-virtual:9080, con el resultado:

Despliegue de GitLab en Portainer

Desde el propio apartado de “Containers“, justo en la línea con la información del contenedor en cuestión, podemos ver sus estadísticas marcando sobre el símbolo de la gráfica.

Gráficas de actividad de contenedores en Portainer

Y con esto lo dejamos por hoy. Quedan muchas más cosas en el tintero. No sé si haré una segunda parte al respecto. Si tenéis interés en que continúe hablando de Portainer podéis pedirlo en los comentarios.


Fuentes consultadas:

Portainer – Installation

Imagen de portada: Pixabay

avatar

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

  Subscribe  
Notificarme de