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