Portainer vs Komodo: сравнение Docker-менеджеров для homelab и self-hosting

Подбираем лучший менеджер контейнеров для вашего хоумлаба: сравнение Portainer и Komodo, установка, настройка, преимущества и недостатки. Гайд для начинающих и продвинутых.

Не указано

Подготовка окружения для Portainer

Создайте сеть и том для данных Portainer. Это обеспечит изоляцию и сохранность данных управления.

# Создаем сеть для Portainer (опционально, но рекомендуется)
docker network create portainer_agent_network

# Создаем том для данных Portainer
docker volume create portainer_data

Запуск Portainer через Docker Compose

Создайте файл docker-compose.yml для Portainer. Это наиболее рекомендуемый способ запуска, обеспечивающий стабильность и удобство обновления.

version: '3.8'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "9000:9000"
      - "8000:8000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    networks:
      - portainer_net

  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
    networks:
      - portainer_agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

networks:
  portainer_net:
    driver: bridge
  portainer_agent_network:
    external: true

Подготовка директорий для Komodo

Создайте структуру директорий для хранения конфигурации и данных Komodo.

mkdir -p ~/komodo/config
mkdir -p ~/komodo/data

Конфигурация Docker Compose для Komodo

Создайте файл docker-compose.yml в директории ~/komodo. Включает Komodo, Prometheus для мониторинга и node-exporter.

version: '3.8'

services:
  komodo:
    image: komodoframework/komodo:latest
    container_name: komodo
    restart: always
    ports:
      - "8080:8080"
      - "9090:9090"
    volumes:
      - ./config/komodo.yaml:/etc/komodo/config.yaml:ro
      - ./data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - KOMODO_LOG_LEVEL=info
    networks:
      - komodo_net
    depends_on:
      - prometheus
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    ports:
      - "9091:9090"
    volumes:
      - ./config/prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--storage.tsdb.retention.time=200h'
      - '--web.enable-lifecycle'
    networks:
      - komodo_net

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: always
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    networks:
      - komodo_net

networks:
  komodo_net:
    driver: bridge

volumes:
  prometheus_data:

Конфигурация Komodo (komodo.yaml)

Создайте файл config/komodo.yaml. Настройте аутентификацию, мониторинг и правила алертинга.

# Настройки сервера Komodo
server:
  host: "0.0.0.0"
  port: 8080
  log_level: "info"

# Настройки аутентификации
auth:
  method: "basic"
  basic:
    users:
      - username: "admin"
        password: "CHANGE_THIS_PASSWORD"
        role: "admin"
      - username: "user1"
        password: "another_password"
        role: "viewer"

# Настройки Docker
docker:
  socket_path: "/var/run/docker.sock"
  networks:
    default_network: "bridge"
  volumes:
    base_path: "/var/lib/docker/volumes"

# Настройки мониторинга
monitoring:
  prometheus_url: "http://prometheus:9090"
  scrape_interval: 15
  alert_manager_url: ""

# Настройки правил и алертинга
rules:
  container_down:
    enabled: true
    condition: "uptime < 5m"
    severity: "high"
    actions:
      - "slack"

# Интеграции
integrations:
  slack:
    webhook_url: ""
    channel: "#docker-alerts"

Конфигурация Prometheus (prometheus.yml)

Создайте файл config/prometheus.yml. Настройте сбор метрик с Komodo, node-exporter и самого Prometheus.

global:
  scrape_interval: 15s
  evaluation_interval: 15s

rule_files:
  - "alert_rules.yml"

scrape_configs:
  - job_name: 'docker'
    static_configs:
      - targets: ['komodo:9090']
    metrics_path: '/metrics'

  - job_name: 'node-exporter'
    static_configs:
      - targets: ['node-exporter:9100']

  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - ''

Запуск и проверка систем

Запустите контейнеры и проверьте их статус. Для Portainer используйте директорию с docker-compose.yml, для Komodo — директорию ~/komodo.

# Для Portainer
cd /путь/к/portainer
docker-compose up -d

# Для Komodo
cd ~/komodo
docker-compose up -d

# Проверка логов Komodo
docker-compose logs -f komodo

# Проверка запущенных контейнеров
docker ps

Первоначальная настройка интерфейсов

Portainer: откройте http://localhost:9000, создайте администратора, подключитесь к локальному Docker-хосту. Komodo: откройте http://localhost:8080, войдите с учетными данными из конфигурации, проверьте подключение к Docker и метрикам.

# Portainer: при первом входе создайте админа
# 1. Email и сложный пароль
# 2. Выберите Local environment
# 3. Нажмите Connect

# Komodo: вход с учетными данными
# 1. Username: admin
# 2. Password: CHANGE_THIS_PASSWORD (замените в конфиге)
# 3. Проверьте раздел Containers и Metrics