Skip to content
algolia

Portainer

Кол-во слов
491 words
Время чтения
4 минуты

WARNING

Текст не отформатирован

INFO

Я стараюсь создавать внешние хранилища/сети (вкладка в портайнер, а не через docker-compose.yml driver: local), если зайти внутри volume, можно увидеть реальный физический путь.

Поэтому если видите сеть/хранилище с атрибутом external: true, вам нужно создать вручную. Чтобы у докера хватало прав на запись/создание папок, примените на директорию volume_name/_data команду chmod

Portainer является на данный момент лучшим выбором web UI для обычного докера, однако редактировать можно только стэки созданные внутри portainer. Если создать стэк через CLI, portainer сможет лишь запускать и останавливать.

Создание хранилища

shell
sudo docker volume create portainer_data

Запуск на 8000 порту

shell
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

В данный команде мы использовали нативный докер, пользоваться им крайне не удобно (а кто любит километровый баш). В дальнейшем мы будем использовать docker-compose, который позволяет запускать контейнеры в стэке (несколько контейнеров в одной или различной сети). Любые дальнейшие действия с докер выполняем внутри portainer, т.к. создает собственные конфиги несовместимые с консольной версией.

Docker-Compose для portainer

Обратите внимание мы используем agent для получения возможности управлять файлами в volume После настройки portainer вы должны добавить в окружение (enviroments->add enviroment-> Environment address: agent:9001) Далее вы работаете внутри окружение agent, чтобы видет кнопку browse. Читать доку

Вы можете установить своё время, сайт по поиску timezone

Код:

/assets/docker/portainer/docker-compose.yml
yml
version: "3.8"
services:
  agent:
    image: portainer/agent
    hostname: portaineragent
    container_name: portaineragent
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes

  portainer:
    image: portainer/portainer-ce:latest
    hostname: portainer
    container_name: portainer
    command: -H tcp://agent:9001 --tlsskipverify
    environment:
      - TZ=Asia/Aqtobe
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/portainer/portainer_data:/data
    ports:
      - "8000:8000"
      - "9443:9443"
    restart: always

P.S. Не путайте docker-compose swarm с docker-compose plugin. Swarm технология крайне нестабильна и устарела, из-за разных версий yaml конфигов, превращает адаптацию конфигов в танцы с бубном. Стэки на сварм часто падают и не работает с внешним хранилищем NFS

Версия docker-compose. Детальная статья по докер на хабре, если вы только начинаете, это нормально если вы не сможете с разу разобраться как писать .Dockerfile

WARNING

Обратите внимание! Для большинства сборок стоит использовать alpine linux (см. содержимое dockerfile или на тэг с версией контейнера), т.к. он заметно легче debian, но есть исключения, к примеру с питоном

Работа с контейнером

В portainer вы можете сразу войти внутрь контейнера и выполнять команды вручную. Важно отметить зайти в контейнер можно лишь зная какое CLI окружение он использует. Если контейнер на базе

  • debian: /bin/bash или просто bash
  • arch: /bin/ash

Если про bash информации пруд пруди, то про alpine linux на сайтах максимум написано про пакетный менеджер apk. Единственный нормальный ресурс по изучение alpine linux, это официальная вики

Alpine linux очень сильно урезана, даже в сравнение со с slim дистрибутивами

Если в дистрибутивах на базе debian есть всегда редактор nano, в alpine иногда урезают даже vim. Про сетевые утилиты и прочие вкусности, я вообще молчу. 😢

WARNING

После пересборки контейнера выполненные изменения через консоль пропадут, записывайте все операции в bash файл или сразу используйте entrypoints

Contributors

shalotts

Changelog

Last updated: