Управление Docker с Portainer: Веб-интерфейс для контейнеров
Установка Portainer CE, управление Docker и Kubernetes, развёртывание стеков, управление томами/сетями, авторизация пользователей, вебхуки и интеграция GitOps.
Содержание
Управление Docker с Portainer: Веб-интерфейс для контейнеров
Portainer — это open-source платформа управления контейнерами, позволяющая управлять средами Docker и Kubernetes через веб-браузер. Без знания командной строки вы можете легко запускать, останавливать контейнеры, просматривать логи и развёртывать стеки.
Что такое Portainer CE?
Portainer Community Edition (CE) — бесплатный и open-source. Ключевые возможности:
- Управление контейнерами: Запуск, остановка, перезапуск, удаление
- Управление образами: Операции pull, push, build, tag
- Развёртывание стеков: Развёртывание файлов Docker Compose через веб-интерфейс
- Тома/Сети: Управление хранилищем и сетью
- Просмотр логов: Логи контейнеров в реальном времени
- Доступ к консоли: Подключение к контейнерам через веб-терминал
- Управление пользователями: Ролевой контроль доступа
Установка
Создание Docker Volume
# Создать том для хранения данных Portainer
docker volume create portainer_data
Установка Portainer CE
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
# 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:
docker compose -f portainer-compose.yml up -d
Подключение к Docker Socket
Portainer взаимодействует с демоном Docker через /var/run/docker.sock. Доступ к этому сокету обеспечивает полный контроль над Docker:
# Проверка прав доступа к сокету
ls -la /var/run/docker.sock
# Добавление пользователя в группу docker (при необходимости)
usermod -aG docker $USER
Доступ к Docker socket эквивалентен правам root. Запускайте Portainer в доверенных сетях и используйте надёжный пароль.
Развёртывание стеков (Docker Compose)
Развёртывание стека через веб-интерфейс
- Stacks → Add Stack
- Введите название стека
- Вставьте содержимое Docker Compose или введите URL Git-репозитория
- Добавьте переменные окружения
- Нажмите Deploy the stack
# Пример: 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-репозитория
- При создании стека выберите опцию Repository
- Введите Git URL:
https://github.com/user/repo - Укажите ветку и путь к compose-файлу
- Включите GitOps updates для автоматических обновлений
Управление контейнерами
# В интерфейсе Portainer:
# Containers → выбрать контейнер → Actions:
# - Start / Stop / Restart / Kill / Pause
# - Logs (в реальном времени)
# - Console (веб-терминал)
# - Inspect (JSON-детали)
# - Stats (использование CPU, ОЗУ, сети)
Веб-терминал (Exec Console)
# Containers → Нажать на имя контейнера
# Вкладка Console → Connect
# Выбрать оболочку: /bin/bash или /bin/sh
Управление пользователями и командами
Создание пользователей
- Settings → Users → Add User
- Установите имя пользователя и пароль
- Назначьте роль: Administrator или Standard User
Создание команд
# Settings → Teams → Add Team
# Название команды: developers
# Добавить участников: пользователь1, пользователь2
Автоматические обновления с вебхуками
# Создать вебхук для стека или сервиса:
# Stack → Название стека → Webhooks
# Скопировать URL вебхука
# Использование в GitHub Actions:
curl -X POST https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN
Edge Agent (Управление удалёнными серверами)
# Установка 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
# Остановить и удалить текущий контейнер
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 через единый веб-интерфейс. Особенно удобно для серверов, на которых работает несколько сервисов.
Связанные статьи
Установка Coolify: Развёртывание приложений с Self-Hosted PaaS
Установка Coolify, интеграция Docker и Git, развёртывание приложений, управление базами данных, SSL-сертификаты, переменные окружения и self-hosted PaaS как альтернатива Heroku/Netlify.
Установка Nextcloud: Self-Hosted облачное хранилище и совместная работа
Установка Nextcloud с Docker, настройка Apache/Nginx, установка базы данных, SSL-сертификат, синхронизация файлов, магазин приложений и оптимизация производительности.
Установка Uptime Kuma: Self-Hosted мониторинг доступности
Установка Uptime Kuma с Docker, мониторинг HTTP/TCP/DNS/ping, интеграции уведомлений (Telegram, Discord, email), создание страницы статуса и настройка оповещений.