Перейти к основному содержимому
Вернуться в категорию

Управление Docker с Portainer: Веб-интерфейс для контейнеров

Установка Portainer CE, управление Docker и Kubernetes, развёртывание стеков, управление томами/сетями, авторизация пользователей, вебхуки и интеграция GitOps.

Время чтения: 13 мин Самостоятельный хостинг
portainerdockerkubernetesвеб-интерфейсуправление контейнерамиself-hosting

Содержание

Управление Docker с Portainer: Веб-интерфейс для контейнеров

Portainer — это open-source платформа управления контейнерами, позволяющая управлять средами Docker и Kubernetes через веб-браузер. Без знания командной строки вы можете легко запускать, останавливать контейнеры, просматривать логи и развёртывать стеки.

Что такое Portainer CE?

Portainer Community Edition (CE) — бесплатный и open-source. Ключевые возможности:

  • Управление контейнерами: Запуск, остановка, перезапуск, удаление
  • Управление образами: Операции pull, push, build, tag
  • Развёртывание стеков: Развёртывание файлов Docker Compose через веб-интерфейс
  • Тома/Сети: Управление хранилищем и сетью
  • Просмотр логов: Логи контейнеров в реальном времени
  • Доступ к консоли: Подключение к контейнерам через веб-терминал
  • Управление пользователями: Ролевой контроль доступа

Установка

Создание Docker Volume

hljs bash
# Создать том для хранения данных Portainer
docker volume create portainer_data

Установка Portainer CE

hljs bash
docker run -d \
  --name portainer \
  --restart=always \
  -p 8000:8000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

После установки:

https://IP_СЕРВЕРА:9443

При первом входе необходимо установить пароль администратора. Если вы не войдёте в систему в течение 5 минут, Portainer необходимо перезапустить по соображениям безопасности.

Установка с Docker Compose

hljs yaml
# portainer-compose.yml
version: '3.8'
services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "8000:8000"
      - "9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    security_opt:
      - no-new-privileges:true

volumes:
  portainer_data:
hljs bash
docker compose -f portainer-compose.yml up -d

Подключение к Docker Socket

Portainer взаимодействует с демоном Docker через /var/run/docker.sock. Доступ к этому сокету обеспечивает полный контроль над Docker:

hljs bash
# Проверка прав доступа к сокету
ls -la /var/run/docker.sock

# Добавление пользователя в группу docker (при необходимости)
usermod -aG docker $USER

Доступ к Docker socket эквивалентен правам root. Запускайте Portainer в доверенных сетях и используйте надёжный пароль.

Развёртывание стеков (Docker Compose)

Развёртывание стека через веб-интерфейс

  1. StacksAdd Stack
  2. Введите название стека
  3. Вставьте содержимое Docker Compose или введите URL Git-репозитория
  4. Добавьте переменные окружения
  5. Нажмите Deploy the stack
hljs yaml
# Пример: WordPress Stack
version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    restart: always
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: ${DB_USER}
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql

volumes:
  wordpress_data:
  db_data:

Развёртывание стека из Git-репозитория

  1. При создании стека выберите опцию Repository
  2. Введите Git URL: https://github.com/user/repo
  3. Укажите ветку и путь к compose-файлу
  4. Включите GitOps updates для автоматических обновлений

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

hljs bash
# В интерфейсе Portainer:
# Containers → выбрать контейнер → Actions:
# - Start / Stop / Restart / Kill / Pause
# - Logs (в реальном времени)
# - Console (веб-терминал)
# - Inspect (JSON-детали)
# - Stats (использование CPU, ОЗУ, сети)

Веб-терминал (Exec Console)

hljs bash
# Containers → Нажать на имя контейнера
# Вкладка Console → Connect
# Выбрать оболочку: /bin/bash или /bin/sh

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

Создание пользователей

  1. SettingsUsersAdd User
  2. Установите имя пользователя и пароль
  3. Назначьте роль: Administrator или Standard User

Создание команд

hljs bash
# Settings → Teams → Add Team
# Название команды: developers
# Добавить участников: пользователь1, пользователь2

Автоматические обновления с вебхуками

hljs bash
# Создать вебхук для стека или сервиса:
# Stack → Название стека → Webhooks
# Скопировать URL вебхука

# Использование в GitHub Actions:
curl -X POST https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN

Edge Agent (Управление удалёнными серверами)

hljs bash
# Установка Edge Agent на удалённом сервере:
docker run -d \
  --name portainer_edge_agent \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  -v /:/host \
  -v portainer_agent_data:/data \
  -e EDGE=1 \
  -e EDGE_ID=ВАШ_EDGE_ID \
  -e EDGE_KEY=ВАШ_EDGE_KEY \
  -e EDGE_INSECURE_POLL=1 \
  portainer/agent:latest

Обновление Portainer

hljs bash
# Остановить и удалить текущий контейнер
docker stop portainer
docker rm portainer

# Загрузить последний образ
docker pull portainer/portainer-ce:latest

# Перезапустить (данные сохраняются в томе)
docker run -d \
  --name portainer \
  --restart=always \
  -p 8000:8000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Установив Portainer на серверах REXE, вы сможете управлять всеми контейнерами Docker через единый веб-интерфейс. Особенно удобно для серверов, на которых работает несколько сервисов.