Portainer
WARNING
Текст не отформатирован
INFO
Я стараюсь создавать внешние хранилища/сети (вкладка в портайнер, а не через docker-compose.yml driver: local
), если зайти внутри volume, можно увидеть реальный физический путь.
Поэтому если видите сеть/хранилище с атрибутом external: true
, вам нужно создать вручную. Чтобы у докера хватало прав на запись/создание папок, примените на директорию volume_name/_data
команду chmod
Portainer является на данный момент лучшим выбором web UI для обычного докера, однако редактировать можно только стэки созданные внутри portainer. Если создать стэк через CLI
, portainer
сможет лишь запускать и останавливать.
Создание хранилища
sudo docker volume create portainer_data
Запуск на 8000 порту
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
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