Перейти к основному контенту

Глава 3.2: Веб-интерфейс для Docker — Portainer

Хотя работа в консоли по SSH развивает навыки сисадмина, постоянно вводить команды для проверки статуса контейнеров или чтения логов вручную надоедает. Хочется иметь удобный «пульт управления», где состояние сервера видно с одного взгляда.

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


1. Подготовка папки и манифеста

Применим наше золотое правило модульности. Создадим отдельную папку для Portainer внутри директории стеков и перейдем в нее:

mkdir -p /stacks/portainer
cd /stacks/portainer

Теперь создадим файл docker-compose.yml:

nano docker-compose.yml

Вставьте туда следующую конфигурацию. Для Portainer нам даже не понадобится файл .env, так как первичную настройку администратора мы сделаем безопасно через веб-интерфейс:

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./portainer_data:/data

2. Разбор особого волюма: Что такое docker.sock?

Обратите внимание на первую строчку в блоке volumes. Она выглядит необычно:

- /var/run/docker.sock:/var/run/docker.sock

Это не просто папка с файлами. docker.sock — это главный системный Unix-сокет (главный нервный узел), через который Docker-движок слушает команды в вашей ОС Debian.

Пробрасывая этот сокет внутрь Portainer, мы буквально даем ему «глаза и руки». Контейнер Portainer заглядывает в этот сокет и начинает видеть всё, что происходит на вашем сервере: какие еще контейнеры запущены, сколько памяти они едят и какие сети используют. Именно это позволяет ему управлять всем Docker-движком изнутри контейнера.


3. Запуск и первая настройка

Запустим наш пульт управления стандартной командой в фоне:

docker compose up -d

После запуска откройте браузер и перейдите по адресу: http://ip_вашего_сервера:9000

⚠️ Важное примечание по безопасности:
При первом входе Portainer попросит вас придумать имя администратора и надежный пароль. Сделайте это в течение 10 минут после запуска контейнера. Если вы оставите страницу открытой и уйдете, Portainer в целях безопасности автоматически заблокирует веб-интерфейс, и вам придется перезапускать контейнер командой docker compose restart, чтобы пройти регистрацию заново.

После создания пользователя выберите пункт "Get Started" (использовать локальное окружение Docker). Вы попадете на главную панель (Dashboard), где увидите плитку с надписью local.


4. Что новичку делать в Portainer? Основные вкладки

Кликните на плитку local, чтобы провалиться в управление вашим сервером. В левом меню вам понадобятся три главные вкладки:

  • Containers: Самое посещаемое место. Здесь списком выведены все ваши контейнеры (включая созданные ранее BookStack и MariaDB). Вы можете выделить любой контейнер галочкой и в один клик нажать Start, Stop, Restart. Рядом с каждым контейнером есть иконки:
    • 📄 (Logs) — мгновенный просмотр логов без ввода команд в консоли.
    • 📊 (Stats) — график потребления процессора и ОЗУ в реальном времени.
    • 💻 (Console) — позволяет провалиться внутрь терминала контейнера прямо через браузер.
  • Images: Список всех скачанных на сервер образов. Тут наглядно видно, какие образы используются, а какие зависли без дела (они будут помечены ярлыком Unused). Отсюда их можно удалять пачками, освобождая место.
  • Stacks: Это встроенный аналог Docker Compose прямо в вебе. Вы можете нажать кнопку Add stack, вставить код любого docker-compose.yml прямо в окно встроенного текстового редактора в браузере, и Portainer сам развернет приложение.

💡 Итог:
Portainer существенно упрощает визуальный контроль, особенно когда количество контейнеров переваливает за десяток. Однако, помните: Portainer — это лишь красивая обертка над Docker. Все ваши файлы и стеки, созданные в консоли, он видит идеально, ничего не ломая.

Теперь, когда визуальный контроль у нас в кармане, давайте добавим в нашу экосистему еще один потрясающий и очень легкий инструмент, который специализируется на мгновенном, «стриминговом» чтении логов. Переходим к Главе 3.3: Мониторинг логов с Dozzle.