Portainer
Portainer es una herramienta web open-source que permite gestionar contenedores. Permite administrar contenedores de forma remota o local, la infraestructura de soporte y todos los aspectos de las implementaciones de Kubernetes, Podman, Docker standalone y Docker Swarm

Enlaces
Requisitos Previos
- Gestor de contenedores docker instalado siguiendo los pasos de instalar contenedores
Directorio de datos
mkdir -pv $HOME/portainer
Fichero de variables
vi $HOME/portainer/.env
Este fichero contendrá las variables de entorno que necesite el propio "Portainer" y el resto de contenedores que se definan desde él
DOMAIN="dominio.comcom"
TZ=Europe/Madrid
CONTAINERDIR=/home/"usuario"
# SMTP Settings
SMTP_HOST=smtp.office365.com
SMTP_PORT=587
SMTP_USER="user@domain.comcom"
SMTP_PASSWORD=pass"pass"
SMTP_FROM="noreply@domain.comcom"
Instalar en docker
sudo docker run \
--name portainer \
--detach \
--restart=always \
--privileged \
--env-file=$HOME/portainer/.env \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume $HOME/portainer:/data \
-p 9000:9000 \
-p 9443:9443 \
docker.io/portainer/portainer-ce
Acceso
En este punto ya puedes ir a http://IP_Docker:9000 o https://IP_Docker:9443 para la configuración de Portainer o continúa para publicar detrás de un Proxy
Ejecutar con docker compose
Crea un fichero "docker-compose.yaml" en el directorio "$HOME/portainer" con el siguiente contenido:
services:
portainer:
image: portainer/portainer-ce
container_name: portainer
env_file: .env
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./:/data
ports:
- 9000:9000
Después podrás gestionar con el comando "docker compose"
cd $HOME/portainer
# Arranca el "stack"
sudo docker compose up -d
# Para el "stack"
sudo docker compose down
Publicando detrás de un proxy
Crear registro DNS
En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "host.domain.com"
NGINX Proxy Manager
Para publicar el contenedor detrás del proxy NGINX, es necesario instalarlo antes. Así que, sigue el siguiente documento para instalar NGINX Proxy Manager.
Para publicar el contenedor detrás de NGINX proxy, deberás recrear el contenedor con la opción "--network=proxy"
# creamos primero la RED
sudo docker network create proxy --network=proxy \
Crear un nuevo "proxy host"
Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use:


Traefik

Para publicar el contenedor detrás del proxy Traefik, es necesario instalarlo antes. Así que, sigue el siguiente documento para instalar Traefik.
Un vez instalado, el contenido del fichero "docker-compose.yml"yaml" de portainer es el siguiente:
services:
portainer:
image: portainer/portainer-ce
container_name: portainer
env_file: .env
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- $HOME/portainer:/data
ports:
- 9000:9000
networks:
- traefik_public
labels:
- traefik.enable=true
- traefik.http.routers.portainer.rule=Host(`portainer.$DOMAIN`)
- traefik.http.routers.portainer.tls=true
- traefik.http.routers.portainer.tls.certresolver=letsencrypt
- traefik.http.services.portainer.loadbalancer.server.port=9000
- traefik.http.routers.portainer.middlewares=privateIPs@file,authelia@file
networks:
traefik_public:
external: true
Configuración de portainer
- http://IP_Docker:9000
- https://portainer.$DOMAIN (si has configurado proxy inverso)
En el primer inicio tendremos que crear el usuario privilegios:

Por último conectamos Portainer al Docker Local:

Actualizar Portainer Bussiness
https://docs.portainer.io/v/ce-2.9/start/upgrade/tobe/docker
Modifica el repositorio en el fichero docker-compose para que usa la imagen de Portainer Bussiness
image: portainer/portainer-ee
Actualiza el contenedor
docker compose up --force-recreate --build -d
docker image prune -f

Añadir un entorno de Docker individual
Add a Docker Standalone environment – Portainer Documentation
Vamos a añadir un nuevo entorno individual de docker vía API. Previamente, nuestra instancia de docker deberá admitir conexiones remotas.
Configurar acceso remoto para Docker
para modificar el fichero docker.service crea el siguiente fichero:
mkdir /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/override.conf
Añade las siguientes líneas:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://IP_docker:2375
Guarda el fichero y recarga la configuración de «systemctl»
systemctl daemon-reload
Reinicia docker
systemctl restart docker.service
Verifica los cambios
netstat -lntp | grep dockerd

Selecciona Docker Standalone y ejecuta el asistente. Selecciona la opción API , rellena los datos que pide