Контейнеры очень прочно вошли в нашу ИТ жизнь. Разработчики различных приложений все чаще и чаще предоставляют не только пакеты, например, для Linux и Windows платформ, но и готовые образы контейнеров. Наиболее распространены образы Docker. Если рассматривать Docker сразу после установки, то у нас есть только один интерфейс управления контейнерами – командная строка Docker. Однако, если отойти от стандартных инструментов для управления, то можно найти и другие альтернативы. Причем даже с графическим интерфейсом. Например, Portainer. Именно об этом инструменте и пойдет речь в этой статье. Я покажу, как выполняется настройка Portainer, а таже приведу примеры его интерфейса.
Есть как коммерческая версия продукта, так и бесплатная. В этой публикации я буду говорить именно о бесплатной версии – Portainer Community Edition (CE).
Описание окружения
В качестве операционной системы я буду использовать Linux Mint 21 Cinnamon (ядро 5.15.0-58-generic).
Версия Docker – 20.10.12.
Версия Portainer – Community Edition2.16.2.
Подготовка окружения
Для того, чтобы управлять контейнерами Docker необходимо, чтобы и сам Docker присутствовал в системе. Если вы еще не установили его, то установку можно выполнить вот такой командой:
sudo apt install -y docker.io
Убедимся, что Docker установлен:
docker -v
roman@portainer:~$ docker -v
Docker version 20.10.12, build 20.10.12-0ubuntu4
roman@portainer:~$
Запуск Portainer
Поскольку Portainer предоставляет в качестве готового Docker образа, то его запуск предельно прост. Вы можете использовать руководство от вендора, если вам будет так удобнее.
Что для этого нужно:
1. Создать том для хранения данных Portainer:
sudo docker volume create portainer_data
roman@portainer:~$ sudo docker volume create portainer_data
portainer_data
roman@portainer:~$
2. Теперь запустим контейнер с Portainer:
sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
roman@portainer:~$ sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Unable to find image 'portainer/portainer-ce:latest' locally
latest: Pulling from portainer/portainer-ce
772227786281: Pull complete
96fd13befc87: Pull complete
0bad1d247b5b: Pull complete
b5d1b01b1d39: Pull complete
Digest: sha256:f7607310051ee21f58f99d7b7f7878a6a49d4850422d88a31f8c61c248bbc3a4
Status: Downloaded newer image for portainer/portainer-ce:latest
a4c22727fc428c8617c11ce318c755593aa6dde07c3b256d349715a8be3dfeec
roman@portainer:~$
Немного о самой команде.
Команда или параметр | Описание |
sudo docker run | Запуск контейнера Docker |
-d | Запуск в качестве фонового задания |
-p 8000:8000 -p 9443:9443 | Публикация портов. Порт TCP/8000 на системе с Docker будет перенаправлять подключения на порт TCP/8000 в самом контейнере. Аналогично и для порта TCP/9443 |
–name portainer | Указываем имя контейнера |
–restart=always | Указываем, что контейнер должен всегда запускаться автоматически |
-v /var/run/docker.sock:/var/run/docker.sock | Монтируем файл сокета Docker в контейнер для того, чтобы Portainer мог управлять нашим Docker на хосте |
-v portainer_data:/data | Монтируем том для хранения данных |
portainer/portainer-ce:latest | Имя Docker образа для запуска |
3. Убедимся, что контейнер успешно запустился:
docker ps
roman@portainer:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4c22727fc42 portainer/portainer-ce:latest "/portainer" 2 minutes ago Up 2 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp, 9000/tcp portainer
roman@portainer:~$
Запуск Portainer завершился успешно.
Настройка Portainer
Теперь попробуем пробраться в веб интерфейс управления Portainer.
https://10.10.10.64:9443
При первом запуске нас попросят указать пароля для администратора.
Также при первом запуске необходимо выбрать окружение с которым будет работать Portainer. Я укажу то окружение, в котором Portainer был запущен.
Так выглядит основная панель мониторинга здоровья нашего узла с Docker.
Теперь мы можем управлять нашими контейнерами, образами, сетью, томами и всему подсистемами Docker через графический интерфейс администрирования:
Попробуем, например, запустить nginx:
Запуск и настройка Portainer завершены.