miércoles, 2 de septiembre de 2020

Portainer: Como facilitarte el trabajo con Docker

Hoy vamos a Portainer, que es una herramienta visual que nos permitirá acceder más fácilmente a la información que nos ofrece Docker. Para aquellos que ya tengan un amplio domino de Docker, igual no es necesaria. Pero si aún no tienes un dominio completo, mala memoria para los comandos o simplemente te gusta más utilizar una interfaz gráfica, este es tu programa. 

Para empezar vamos a ver como podemos arrancarlo. Como es una herramienta para el manejo de Docker, vamos a ver varias formas de lanzarlo a través de el. La primera de ella es arrancandolo como un container standalone, a través del siguiente comando:

docker run -d -p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer

Sobre este comando podemos comentar varias cosas importantes:

  • El puerto 9000 será el que nos permita acceder a la interfaz de portainer. 
  • Es muy importante montar el volumen que permita enlazar el socker del motor de Docker. En el caso de que usemos Windows, esta ruta será difererente.
  • Y por último indicamos una carpeta donde queremos persistir la información. 
Ya solo nos quedará acceder a través de la URL http://localhost:9000/. La primera vez que entremos nos pedirá la contraseña para el administrador. 


Ya hemos visto como arrancarlo de forma standalone. Pero yo creo que es mucho más útil si vemos como arrancarlo dentro de un docker-compose. Puesto que nos ayudará a ver el funcionamiento de los distintos contenedores del mismo.

Para ello debemos modificar un fichero docker-compose.yml. Y añadir el siguiente código:

portainer:
  image: portainer/portainer:1.24.1
  container_name: sandbox-portainer
  hostname: sandbox-portainer
  networks:
    sandbox-net:
      ipv4_address: 172.28.1.99
  ports:
    - 9000:9000
    - 8000:8000
  command: --admin-password "$$2y$$10$$lO6tHD/1fYPxc3dJ.9ahl.y97R7Zo4nDMZuLD/nXBc93eHfpcZN0q"   
volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data/portainer:/data

Como podemos ver es bastante parecido, pero lo describo para aquellos que no conoscan tanto docker-compose. 

  • Indicamos la imagen y versión que vamos a utilizar
  • El nombre del contenedor y de la máquina dentro del mismo. 
  • Indicamos la IP en la red interna que hemos creado para el docker-compose
  • Indicamos el mapeo de puertos desde el contenedor al exterior. En este caso además del 9000, exponemos el 8000. El cual habilita el endpoint para el edge agent. Más información aquí
  • Indicamos que al arrancar el contendor podamos setear la contraseña del administrador. 
  • Indicamos los volúmenes tal y como hicimos en el caso del standalone. 

Lo más complejo puede ser la contraseña. Esta debe tener al menos 8 caracteres y estar codificada en bcrypt. Aquí tenéis una web que os permite generarlos. Eso sí, los símbolos $ debéis escaparlos con otro símbolo $ para evitar errores al arrancar, del tipo: Invalid interpolation format for "command" option in service "portainer".

Ahora al arrancar veremos una pantalla como esta:


Ya podemos acceder con nuestra contraseña y ver las distintas opciones que nos proporciona. Pero la primera vez que accedamos deberemos indicar a que instancia de docker nos queremos conectar. Es decir si accederemos a un docker remoto o a uno lanzado en nuestra propia máquina. En nuestro ejemplo, evidentemente escogeremos la local.

Ya una vez dentro iremos directamente a la opción del menú lateral Home. Y podremos ver un menú muy intuitivo de lo que podemos hacer.


Podemos acceder a los contenedores, imagenes, redes o volúmenes que hayamos creado. Todo esto también es accesible a través de la línea de comandos del propio docker. Pero como dije en un principio será muy útil si no somos muy hábiles con la línea de comando o simplemente preferimos la interfaz gráfica.  Pero veamos varias opciones con un poco más de profundidad.

Desde la pestaña de Containers, podremos ver los distintos containers desplegados, acceder a los logs de cada uno, los datos del contenedor (inspect) o estadísticas de su uso.


Como se puede apreciar podemos parar, borrar, reiniciar cualquier contenedor simplemente con un par de click. Pinchando sobre ellos también accederemos a más información del contenedor y podremos seguir haciendo estas acciones. 


Además también podremos acceder fácilmente al contenedor y ejecutar comandos dentro del mismo. A través de la acción rápida Exec Console.


Desde el menú lateral podemos acceder a las imágenes Docker. Al igual que con los contenedores, podremos acceder a más información al clickear sobre ellas o borrarlas. Además podremos importar y exportar otras imágenes. 


Otro de los puntos fuertes, es que las listas son ordenables por todos sus campos y además también permiten indicar el número de elementos a mostrar. 

Y lo mismo podremos hacer con las redes internas.


Y con los volúmenes. Personalmente este apartado me parece muy útil e interesante. Porque nos permitirá limpiar fácilmente volúmenes antiguos y de los cuales podemos no ser conscientes. Además con la ordenación de las listas, lo podremos solventar rapidamente. 


Otro apartado muy interesante son los templates. Los cuales te permitirán desplegar de forma con un único click alguno de los contenedores que se muestran en la lista. 


Por lo demás también tendremos opciones de configuración en la parte inferior del menú lateral, no asociadas al motor Docker. 


No hay comentarios:

Publicar un comentario