Portainer
Portainer🡭 es una plataforma para manejar y administrar contenedores de {{Docker}} y {{Kubernetes}}.
La interfaz es casi perfecta, te permite administrar (levantar, detener, eliminar) contenedores y stacks específicos. Lo bueno de Portainer es que no solo te permite crear stacks desde la interfaz, si no que también te permite manejar los stacks que ya tenes definidos con sus propios archivos de {{docker-compose}}.
Como ejecutar Portainer local?
Portainer se ejecuta dentro de su propio contenedor, para eso tenemos dos alternativas para ejecutarlo.
Por un lado podemos directamente ejecutar el comando de docker run
de la siguiente manera:
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
De esta forma vamos a estar exponiendo Portainer en el puerto 9443 (este mismo se encarga de generar un certificado ssl). También vamos a estar pasandole el nombre de un volumen llamado portainer_data
que si no lo tenemos creado lo podemos crear de la siguiente manera:
docker volume create portainer_data
Hay que recordar que de esta manera, estamos dejando que la administración del volumen la realice {{Docker}}. Esto tiene ventajas y desventajas.
docker-compose
Por otro lado, podemos correr Portainer, utilizando docker-compose. En mi caso es la forma que prefiero porque me permite tener un registro especifico del stack completo que estoy corriendo. Ademas de que los archivos .yml
podemos gestionarlos con {{what-is-git}} y eso nos da un control de versión que nos sirve para controlar cambios.
version: "3"
services:
portainer:
image: portainer/portainer-ce:latest
ports:
- 9443:9443
volumes:
- ./data/portainer:/data
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
En este caso el directorio data que vamos a montar, lo vamos a montar usando un bind
mount, pasandole un directorio local. Una ventaja simple de esto, es que podemos hacer un backup del directorio data/portainer
del host y copiarlo a otro lugar, sin tener que andar exportando el volumen en {{Docker}}.