Skip to main content

3.1 Portainer. Gestión de contenedores

portainer-logo.png

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

portainer-deployed.png

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.portainer. Obteniendo unos resultados similares a los siguientes:

docker-ps-grep-portainer.png

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.

portainer-index.png

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.

Accederemos a XXX