Что такое Portainer?

Portainer — это мощный веб-интерфейс для управления Docker контейнерами, образами, сетями и томами. Он превращает сложные команды Docker CLI в интуитивно понятный графический интерфейс, делая управление контейнерами доступным для всех членов команды.

Ключевые возможности Portainer

  • Веб-интерфейс — управление через браузер
  • Multi-platform — Docker, Kubernetes, Docker Swarm
  • Управление пользователями — команды и роли
  • Шаблоны приложений — быстрое развертывание
  • Мониторинг ресурсов — использование CPU, памяти
  • Логи и консоль — доступ к контейнерам

Установка Portainer

Установка с помощью Docker:

 1# Создание тома для данных Portainer
 2docker volume create portainer_data
 3
 4# Запуск Portainer Server
 5docker run -d \
 6  -p 8000:8000 \
 7  -p 9443:9443 \
 8  --name portainer \
 9  --restart=always \
10  -v /var/run/docker.sock:/var/run/docker.sock \
11  -v portainer_data:/data \
12  portainer/portainer-ce:latest
13
14# Доступ через браузер
15# https://localhost:9443

Установка через Docker Compose:

 1# docker-compose.yml
 2version: '3.8'
 3
 4services:
 5  portainer:
 6    image: portainer/portainer-ce:latest
 7    container_name: portainer
 8    restart: always
 9    ports:
10      - "8000:8000"
11      - "9443:9443"
12    volumes:
13      - /var/run/docker.sock:/var/run/docker.sock
14      - portainer_data:/data
15    environment:
16      - PORTAINER_ADMIN_PASSWORD_FILE=/run/secrets/portainer_password
17    secrets:
18      - portainer_password
19
20volumes:
21  portainer_data:
22
23secrets:
24  portainer_password:
25    file: ./portainer_password.txt

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

После первого запуска:

  1. Открой браузер и перейди на https://localhost:9443
  2. Создай учетную запись администратора
  3. Выбери тип окружения (Docker, Kubernetes)
  4. Подключись к локальному Docker daemon

Управление контейнерами

Основные операции через веб-интерфейс:

  • Просмотр контейнеров — статус, ресурсы, порты
  • Создание контейнеров — из образов или шаблонов
  • Управление жизненным циклом — старт, стоп, рестарт
  • Просмотр логов — в реальном времени
  • Доступ к консоли — exec в контейнеры

Работа с Docker Compose

Portainer поддерживает развертывание стеков через Docker Compose:

 1# Пример стека в Portainer
 2version: '3.8'
 3services:
 4  web:
 5    image: nginx:alpine
 6    ports:
 7      - "80:80"
 8    volumes:
 9      - ./html:/usr/share/nginx/html
10    depends_on:
11      - db
12
13  db:
14    image: postgres:13
15    environment:
16      POSTGRES_DB: myapp
17      POSTGRES_USER: user
18      POSTGRES_PASSWORD: password
19    volumes:
20      - db_data:/var/lib/postgresql/data
21
22volumes:
23  db_data:

Шаблоны приложений

Portainer предоставляет готовые шаблоны для популярных приложений:

  • Базы данных — MySQL, PostgreSQL, MongoDB
  • Веб-серверы — Nginx, Apache, Caddy
  • Мониторинг — Grafana, Prometheus
  • CI/CD — Jenkins, GitLab Runner
  • CMS — WordPress, Drupal

Управление пользователями и командами

1# Создание пользователя через API
2curl -X POST "https://localhost:9443/api/users" \
3  -H "Content-Type: application/json" \
4  -H "Authorization: Bearer YOUR_API_TOKEN" \
5  -d '{
6    "username": "developer",
7    "password": "secure_password",
8    "role": 2
9  }'

Мониторинг ресурсов

Portainer показывает метрики в реальном времени:

  • Использование CPU и памяти контейнерами
  • Сетевой трафик
  • Использование дискового пространства
  • Статистика по образам

Интеграция с Kubernetes

Portainer поддерживает управление Kubernetes кластерами:

 1# Установка Portainer в Kubernetes
 2kubectl apply -n portainer -f https://downloads.portainer.io/ce2-18/portainer.yaml
 3
 4# Создание сервиса NodePort
 5kubectl expose deployment portainer \
 6  --type=NodePort \
 7  --name=portainer-service \
 8  --port=9000 \
 9  --target-port=9000 \
10  -n portainer

Резервное копирование и восстановление

 1# Создание резервной копии данных Portainer
 2docker run --rm \
 3  -v portainer_data:/data \
 4  -v $(pwd):/backup \
 5  alpine tar czf /backup/portainer-backup.tar.gz -C /data .
 6
 7# Восстановление из резервной копии
 8docker run --rm \
 9  -v portainer_data:/data \
10  -v $(pwd):/backup \
11  alpine tar xzf /backup/portainer-backup.tar.gz -C /data

API и автоматизация

Portainer предоставляет REST API для автоматизации:

 1import requests
 2import json
 3
 4# Аутентификация
 5def authenticate(username, password):
 6    url = "https://localhost:9443/api/auth"
 7    payload = {
 8        "username": username,
 9        "password": password
10    }
11    response = requests.post(url, json=payload, verify=False)
12    return response.json()["jwt"]
13
14# Получение списка контейнеров
15def get_containers(token):
16    url = "https://localhost:9443/api/endpoints/1/docker/containers/json"
17    headers = {"Authorization": f"Bearer {token}"}
18    response = requests.get(url, headers=headers, verify=False)
19    return response.json()
20
21# Создание контейнера
22def create_container(token, image, name):
23    url = "https://localhost:9443/api/endpoints/1/docker/containers/create"
24    headers = {"Authorization": f"Bearer {token}"}
25    payload = {
26        "Image": image,
27        "name": name,
28        "ExposedPorts": {"80/tcp": {}},
29        "HostConfig": {
30            "PortBindings": {"80/tcp": [{"HostPort": "8080"}]}
31        }
32    }
33    response = requests.post(url, json=payload, headers=headers, verify=False)
34    return response.json()

Безопасность

Рекомендации по безопасности Portainer:

  • Используй HTTPS с валидными сертификатами
  • Настрой строгую аутентификацию
  • Ограничь доступ к Docker socket
  • Регулярно обновляй Portainer
  • Используй роли для ограничения доступа

Альтернативы Portainer

  • Docker Desktop — встроенный GUI для Docker
  • Rancher — полноценная платформа управления контейнерами
  • Kubernetes Dashboard — для управления K8s
  • Lazydocker — терминальный UI для Docker

Сравнение редакций Portainer

ФункцияCommunity EditionBusiness Edition
Базовое управление
RBACБазовыйРасширенный
LDAP/AD интеграция
ПоддержкаСообществоКоммерческая

Случаи использования Portainer

  • Разработка — быстрое тестирование контейнеров
  • Обучение — изучение Docker без CLI
  • Небольшие команды — простое управление инфраструктурой
  • Демонстрации — наглядное представление архитектуры

Преимущества Portainer

  • Простой и интуитивный интерфейс
  • Быстрая установка и настройка
  • Поддержка множества платформ
  • Активное сообщество и развитие
  • Бесплатная версия с основными функциями

Рекомендации по использованию

  • Настрой регулярные резервные копии данных
  • Используй шаблоны для стандартизации развертываний
  • Настрой мониторинг ресурсов
  • Обучи команду основам работы с интерфейсом

FAQ

Безопасно ли давать доступ к Docker socket?

Доступ к Docker socket даёт полные права на хост. Используй Portainer только в доверенной среде или настрой удалённое подключение через TLS.

Можно ли использовать Portainer в production?

Да, но рекомендуется Business Edition для production окружений с расширенными функциями безопасности и поддержкой.