Как запустить сервис для управления docker контейнерами?

Цель и необходимость

У меня довольно много сервисов, которые работают на моем сервере. Легко понять, что сервисы периодически обновляются и ломаются в самый неподходящий момент. В таких ситуациях я обычно захожу на VM с сервисом, смотрю логи dcoker, пытаюсь понять причину и исправить ее. Из этой цепочки видно, что для упрощения действий нужна довольно простая «админка» с функционалом:

  1. Просмотр всех контейнеров на всех VM: статусы, логи и т.д.

  2. Остановка и запуск контейнеров.

  3. Доступность функционала выше со всех устройств. В текущей статье запустим и настроим сервис, который будет нам давать такой функционал.

docker-compose

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    command: -H unix:///var/run/docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./config_portainer:/data
    ports:
      - "9000:9000"

Зайти в UI можем по пути http://<IP>:9000. В первый раз нас перенаправят на страницу для заведения пароля для пользователя с админскими правами.

Переходим Administration -> Environment-related -> Environments -> Add environment -> Docker Standalone -> Start Wizard.

После нажатия должны быть выведена команда подобная:

docker run -d \ -p 9001:9001 \ --name portainer_agent \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/lib/docker/volumes:/var/lib/docker/volumes \ -v /:/host \ portainer/agent:2.33.1

Необходимо перейти на VM и выполнить ее. Данная команда запустит агента на VM, через которого мы сможем управлять нашими контейнерами.

Возвращаемся на машину откуда будем управлять всеми контейнерами и заполняем поля:

  1. Name - название.

  2. Environment address - IP VM c портом (9001, если не меняли команду), где мы выполнили команду выше.

По схеме выше соединяемся со всеми VM. После всех манипуляций в контейнерах будет доступна кнопка «Recreate» и дополнительным свойством «Re-pull image». Если нажать эту кнопку с нажатым свойством «Re-pull image», то:

  1. Cкачается image последней версии, если в docker-compose указан тег «latest»

  2. Остановится и запустится обновленный контейнер.

  3. «Старый» image будет помечен как неиспользуемый и его можно будет в дальнейшем удалить, также как и неиспользуемые volumes.

Смартфон

Сначала выпустим токен:

  1. Входим в UI portainer: User settings -> Access tokens -> Add access token.

  2. Получаем токен и «запоминаем» его.

Устанавливаем приложение pourtainer и вводим в нем IP:port сервиса и токен, который мы получили на предыдущем этапе. Теперь у нас есть доступ через мобильное устройство к нашему сервису.

ИТОГ

Теперь у нас есть мощный инструмент взаимодействия с контейнерами.

!include plantuml/portainer.plantuml

Ссылки:

  1. Зачем нужен собственный сервер в 2025?

  2. Как установить Proxmox?

  3. Как установить Docker?