Skip to main content

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

Connect to the Docker Socket - Portainer Documentation

Enlaces

https://www.portainer.io/

https://docs.portainer.io

Requisitos Previos

  • Gestor de contenedores docker instalado siguiendo los pasos de instalar docker

Ejecutar con docker compose

Crea un fichero "docker-compose.yaml" en el directorio "$HOME/docker_volumes/portainer" con el siguiente contenido:

services:
  portainer:
    image: portainer/portainer-ce
    container_name: portainer
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer:/data
    ports:
      - 9000:9000
volumes:
  portainer:
networks:
  proxy:
    external: true  # Usa una red existente (debes crearla antes con `docker network create proxy`)

Después podrás gestionar con el comando "docker compose"

# 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.image.png

Para publicar el contenedor detrás de NGINX proxy, deberás recrear el contenedor con la opción "--network=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:

image.png

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.yaml" de portainer es el siguiente:

services:
  portainer:
    image: portainer/portainer-ce
    container_name: portainer
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - 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
volumes:
  portainer:
networks:
  traefik_public:
    external: true

Configuración de portainer

Abrimos un navegador web, y accedemos al servicio Portainer que tenemos en ejecución en Docker:

  • 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
Cuando entres de nuevo en portainer, te pedirá license key. Pégala desde el email que habrás recibido.

‘Business Edition’ aparece ahora en la esquina inferior izquierda.

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