= portainer
{{tag>docker}}
gestor de contenedores de Docker
== server
services:
portainer:
#image: portainer/portainer-ce:sts
image: portainer/portainer-ee:2.40.0
restart: always
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
container_name: portainer
# ports:
# - 9443:9443
# - 8000:8000 # Remove if you do not intend to use Edge Agents
# networks:
# default:
# name: portainer_network
== agent (in remote server)
* fijamos la IP interna:
name: portainer
services:
agent:
image: portainer/agent:sts
restart: always
networks:
portainer_agent_net:
ipv4_address: 172.20.0.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumnes:/var/lib/docker/volumes
- /:/host
container_name: portainer-agent
networks:
portainer_agent_net:
ipam:
config:
- subnet: 172.20.0.0/16
* abrimos un tunel desde el servidor: # -f hace que se quede en background
ssh -N -f -L 9002:172.20.0.5:9001 s4.fidmag.org
# podemos localizarlo después con:
ps aux | grep ssh
# o eliminarlo directamente:
fuser -k 9002/tcp
* configuramos el entorno en portainer server
* también se puede hacer a través de:
# Instalación (en Ubuntu/Debian)
sudo apt install autossh
# Crear el túnel persistente
autossh -M 0 -f -N -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -L 9002:172.20.0.5:9001 usuario@IP-SERVIDOR-REMOTO
=== otros comandos
* tunel activo?: netstat -tunlp | grep 9002
# O también:
ss -tunlp | grep 9002
* ip contenedor: docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' portainer-agent
== agente
services:
portainer-agent:
image: portainer/agent:latest
container_name: portainer-agent
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# - /var/lib/docker/volumes:/var/lib/docker/volumes
ports:
- "9001:9001"
# IMPORTANTE: En entornos muy restrictivos, a veces requiere modo privilegiado
privileged: true
== saltar "http VS https" en agente remoto tunelizado + 2 portainer servers
portainer degrada a http las conexiones locales.
* crear **127.0.0.1 agent.remote.local** en ''/etc/hosts''
* modificar portainer server para añadir: extra_hosts:
- "agent.s4.local:host-gateway"
* esto evita que se use el DNS de Docker que no encontraba ese servidor
* montar el tunel:ssh -N -L 0.0.0.0:9002:172.20.0.6:9001 server.com
* hemos montado un segundo agente (portainer solo adminte 1 conexión con un agente, y una vez emparejado no soporta más):name: portainer
services:
agent-fidmag:
image: portainer/agent:sts
restart: always
networks:
portainer_agent_net:
ipv4_address: 172.20.0.5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumnes:/var/lib/docker/volumes
- /:/host
container_name: portainer-agent-fidmag
agent-mate:
image: portainer/agent:sts
restart: always
networks:
portainer_agent_net:
ipv4_address: 172.20.0.6
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumnes:/var/lib/docker/volumes
- /:/host
container_name: portainer-agent-mate
networks:
portainer_agent_net:
ipam:
config:
- subnet: 172.20.0.0/16
== reset contraseña
#!/bin/bash
docker pull portainer/helper-reset-password
docker run --rm -v ./data:/data portainer/helper-reset-password