Как запустить сервис для управления docker контейнерами?
Цель и необходимость
У меня довольно много сервисов, которые работают на моем сервере. Легко понять, что сервисы периодически обновляются и ломаются в самый неподходящий момент. В таких ситуациях я обычно захожу на VM с сервисом, смотрю логи dcoker, пытаюсь понять причину и исправить ее. Из этой цепочки видно, что для упрощения действий нужна довольно простая «админка» с функционалом:
Просмотр всех контейнеров на всех VM: статусы, логи и т.д.
Остановка и запуск контейнеров.
Доступность функционала выше со всех устройств. В текущей статье запустим и настроим сервис, который будет нам давать такой функционал.
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, через которого мы сможем управлять нашими контейнерами.
Возвращаемся на машину откуда будем управлять всеми контейнерами и заполняем поля:
Name - название.
Environment address - IP VM c портом (
9001
, если не меняли команду), где мы выполнили команду выше.
По схеме выше соединяемся со всеми VM. После всех манипуляций в контейнерах будет доступна кнопка «Recreate» и дополнительным свойством «Re-pull image». Если нажать эту кнопку с нажатым свойством «Re-pull image», то:
Cкачается
image
последней версии, если вdocker-compose
указан тег «latest»Остановится и запустится обновленный контейнер.
«Старый»
image
будет помечен как неиспользуемый и его можно будет в дальнейшем удалить, также как и неиспользуемыеvolumes
.
Смартфон
Сначала выпустим токен:
Входим в UI portainer: User settings -> Access tokens -> Add access token.
Получаем токен и «запоминаем» его.
Устанавливаем приложение pourtainer и вводим в нем IP:port
сервиса и токен, который мы получили на предыдущем этапе. Теперь у нас есть доступ через мобильное устройство к нашему сервису.
ИТОГ
Теперь у нас есть мощный инструмент взаимодействия с контейнерами.
Ссылки: