Docker-compose для Portainer

Обновлено и опубликовано Опубликовано:

Используемые термины: Portainer, Docker.

Данная инструкция может послужить в качестве шпаргалки по развертыванию Portainer в докер-контейнере.

Файл docker-compose

Создадим каталог, где будем размещать файлы приложения:

mkdir /opt/portainer

Перейдем в него:

cd /opt/portainer

Создадим docker-compose файл:

vi docker-compose.yml

  1. ---
  2.  
  3. services:
  4.  
  5.   portainer:
  6.     image: portainer/portainer-ce:latest
  7.     container_name: portainer
  8.     hostname: portainer
  9.     restart: unless-stopped
  10.     environment:
  11.       TZ: "Europe/Moscow"
  12.     volumes:
  13.       - /var/run/docker.sock:/var/run/docker.sock
  14.       - ./portainer_data:/data
  15.     ports:
  16.       - "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 — должна открыться стартовая страница, где от нас потребуется ввести логин и пароль, которые мы хотим использовать для входа в систему под администратором:

Создаем логин и пароль для администрирования portainer

Если мы задержимся с ответом, система выдаст сообщение о необходимости перезапустить сервис:

Если сервис долго запущен до выполнения инициализации, система потребует от нас перезапуска службы

Вводим команду:

docker-compose restart

И возвращаемся к процедуре веб-установки.

Установка и запуск Portainer завершены.

Настройка удаленного docker хоста

Дополнительно рассмотрим добавление в Portainer хоста Docker, который расположен на другом сервере.

В веб-интерфейса переходимо в раздел Environment-related - Environments:

Переходим в Environments в левом меню портейнера

Справа сверху кликаем по:

Переходим к добавлению нового окружения

Выбираем Docker Standalone:

Среди списка систем для управления выбираем Docker

Запускаем мастер настройки:

Запускаем инструмент для настройки подключения к удаленногму хосту

Выбираем, что будем подключаться к удаленному docker хосту с помощью агента:

Выбор агента как способ подключения к docker хосту

Мы получим команду для запуска docker-контейнера с агентом:

Команда для запуска docker-контейнера с агентом portainer

Мы можем скопировать и запустить контейнер 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. Продолжая настраивать агента, вводим имя хоста и указываем, как подключиться к агенту:

Настраиваем подключение к агенту portainer с сервера

* в нашем примере мы запустили агента на сервере 192.168.100.16 и порту 9002.

Кликаем по Connect:

Кнопка завершения настройки агента и подключения нового хоста

Подключение агента завершено.

Список подключенных хостов docker можно посмотреть на домашней странице. Там же можно выбрать нужный для управления его docker инфраструктурой.

# DevOps # Linux # Серверы # Управление
Дмитрий Моск — частный мастер
Был ли вам полезен этот скрипт?

Да            Нет