Docker-compose для Portainer
Используемые термины: Portainer, Docker.
Данная инструкция может послужить в качестве шпаргалки по развертыванию Portainer в докер-контейнере.
Создание файла docker-compose
Описание сценария запуска Portainer
Запуск контейнера
Установка приложения в веб-интерфейсе
Подключение удаленного docker хоста
Файл docker-compose
Создадим каталог, где будем размещать файлы приложения:
mkdir /opt/portainer
Перейдем в него:
cd /opt/portainer
Создадим docker-compose файл:
vi docker-compose.yml
- ---
- services:
- portainer:
- image: portainer/portainer-ce:latest
- container_name: portainer
- hostname: portainer
- restart: unless-stopped
- environment:
- TZ: "Europe/Moscow"
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- - ./portainer_data:/data
- ports:
- - "9000:9000"
Описание сценария
На что стоит обратить особое внимание:
Строки | Описание |
---|---|
6 | Для развертывания мы берем образ portainer/portainer-ce (community edition) последней версии. |
7, 8 | Задаем для удобства имя контейнера и hostname. |
9 | Наш контейнер должен автоматически запускаться, если не был выключен явно. |
10 - 11 | Задаем системную переменную, указал часовой пояс. |
12 - 14 | Монтируем внутрь контейнера: - файл /var/run/docker.sock. Необходимо, чтобы сервис, запущенный в контейнере взаимодействовал с докер-системой хоста. - каталог portainer_data. Будет находится в текущей папке. Нужен для хранения данных, которые мы не хотим потерять, когда контейнер будет перезагружен. |
15 - 16 | Делаем так, чтобы наш контейнер слушал на внешнем порту 9000. |
* примеры работы с docker-compose можно увидеть в инструкции Шпаргалка по работе с docker-compose.
Запуск и проверка
Запустим контейнер с помощью docker-compose:
docker-compose up -d
Для проверки можно попробовать отправить http-запрос из консоли:
curl http://127.0.0.1:9000
Мы должны увидеть html-разметку. Значит, портал слушает и отвечает.
Идем дальше.
Веб установка
Для работы Portainer необходимо инициализировать настройки. В браузере переходимо на портал, например, http://192.168.100.15:9000 — должна открыться стартовая страница, где от нас потребуется ввести логин и пароль, которые мы хотим использовать для входа в систему под администратором:
Если мы задержимся с ответом, система выдаст сообщение о необходимости перезапустить сервис:
Вводим команду:
docker-compose restart
И возвращаемся к процедуре веб-установки.
Установка и запуск Portainer завершены.
Настройка удаленного docker хоста
Дополнительно рассмотрим добавление в Portainer хоста Docker, который расположен на другом сервере.
В веб-интерфейса переходимо в раздел Environment-related - Environments:
Справа сверху кликаем по:
Выбираем Docker Standalone:
Запускаем мастер настройки:
Выбираем, что будем подключаться к удаленному docker хосту с помощью агента:
Мы получим команду для запуска docker-контейнера с агентом:
Мы можем скопировать и запустить контейнер portainer-агента на хосте, которым хотим управлять:
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.21.3
По умолчанию, portainer предлагает запустить агента на порту 9001. Если на удаленном хосте данный порт уже занят, необходимо поменять строку:
docker run -d \
-p 9002:9001 \
...* в данном примере мы сделаем так, что агент будет слушать на порту 9002.
Однако, для продуктивной среды рекомендую использовать docker-compose. Для начала создадим каталог для хранения файлов агента и перейдем в него:
mkdir /opt/portainer_agent
cd /opt/portainer_agent
Создаем docker-compose файл:
vi docker-compose.yml
---
services:
portainer-agent:
image: portainer/agent:2.21.3
container_name: portainer-agent
hostname: portainer-agent
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
- /:/host
ports:
- "9001:9001"
* обратите внимание, что мы указали версию агента, которую нам выдал портал портейнера.
Для запуска контейнера с агентом вводим:
docker-compose up -d
Проверить статус сервиса можно командой:
docker-compose ps -a
Возвращаемся к веб-интерфейсу Portainer. Продолжая настраивать агента, вводим имя хоста и указываем, как подключиться к агенту:
* в нашем примере мы запустили агента на сервере 192.168.100.16 и порту 9002.
Кликаем по Connect:
Подключение агента завершено.
Список подключенных хостов docker можно посмотреть на домашней странице. Там же можно выбрать нужный для управления его docker инфраструктурой.