Установка Portainer в Docker
-
Установка Portainer в Docker (Вариант 1)
Сначала создаём том portainer-data. Это специальный каталог на хостовой системе, который будет взаимодействовать с контейнером сервиса Portainer. Туда работающий контейнер будет отправлять логи, конфиги, и другие данные.
Все тома для всех приложений, запущенных в Docker, по умолчанию сохраняются тут: /var/lib/docker/volumes/
После применения следующей команды, каталог станет доступен по следующему пути: /var/lib/docker/volumes/portainer-data
sudo docker volume create portainer_dataСледующая команда запускает контейнер с Portainer (перед тем как запускать команду, просмотрите её описание ниже).
sudo docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ceЭта команда запускает контейнер с Portainer — системой управления Docker через веб-интерфейс. Разберём каждый элемент:
docker run — команда для запуска нового контейнера. -d — запускает контейнер в фоновом режиме (detached), что позволяет работать с командной строкой дальше, не блокируя терминал. -p 9000:9000 — пробрасывает порт 9000 контейнера на порт 9000 хоста. Это позволяет обращаться к веб-интерфейсу Portainer по адресу http://localhost:9000. --name portainer — задает контейнеру имя portainer, что упрощает его управление (например, при остановке или удалении контейнера можно будет обращаться по имени). --restart=always — настройка автозапуска контейнера. Контейнер будет перезапущен автоматически после перезагрузки системы или при его остановке. -v /var/run/docker.sock:/var/run/docker.sock — подключает сокет Docker, позволяя Portainer взаимодействовать с Docker-демоном напрямую. Это нужно для управления контейнерами, образами и прочими ресурсами Docker. -v portainer_data:/data — создаёт (если не создан) и подключает том portainer_data к /data внутри контейнера для хранения данных Portainer, включая настройки и информацию о подключенных Docker-окружениях. portainer/portainer-ce — указывает образ, из которого создаётся контейнер. В данном случае это Portainer CE (Community Edition), open-source версия Portainer. Если этого образа нет на компьютере, он автоматически скачается с Docker-репозитория (официальный репозиторий - DockerHub).После этого интерфейс Portainer будет доступен по адресу http://<ваш_сервер>:9000
Если порт 9000 на хостовой системе занят (например, используется для PeerTube), порт с контейнера можно пробросить на другой порт хоста, свободный. Например, на 7041. В итоге будет -p 7041:9000
Параметр --restart=always говорит о том, что контейнер будет восстанавливать своё рабочее состояние даже, если его остановить вручную. Иногда это неприемлемо, так как бывает необходимо остановить контейнер и не запускать его какое то время. Для этого значение always нужно поменять на unless-stopped. Контейнер по прежнему будет автоматически запускаться при перезагрузке системы или каком-то сбое, но вручную его остановить можно будет. Поэтому, пишем --restart=unless-stopped
В итоге команда запуска Portainer может быть такой:
sudo docker run -d -p 7041:9000 --name portainer --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ceПосле этого интерфейс Portainer будет доступен по адресу http://<ip-сервера>:7041 (или http://localhost:7041)
Первым делом при вызове Portainer в браузере, нужно задать логин и пароль. По умолчанию логин предлагается как admin, можно так оставить.

После задания пароля (он должен быть не меньше 12 символов), нажимаем кнопку Create User. И снимаем галочку внизу, чтобы не отправлять статистику.
Если не сразу задать пароль, и оставить окно в таком состоянии на некоторое время, то после создания пользователя Portainer оповестит об истечении времени жизни экземпляра по соображениям безопасности, и попросит перезапустить Portainer.

Перезапускаем командой
sudo docker restart portainerОбновляем страницу, и снова задаём нужный логин и пароль. После нажатия кнопки Create User появится интерфейс Portainer

Слева выбираем вкладку Home, появится такое окно:

В правой части видим компьютер, на котором установлен Docker и Portainer. Компьютер называется Local, и ниже представлены краткие характеристики компьютера и сколько компонентов Докер там установлено - количество контейнеров, образов, томов и прочего.
Жмём на область с информацией о компьютере Local. Окно станет таким:

Жмём слева на вкладку Stacks. Стеки - это своеобразные проекты, отображающие многоконтейнерные приложения. Контейнер в таком приложении может быть и один, но если он создан с помощью Docker Compose, то Portainer будет считать его стеком. Например, на данном скрине отображён установленный Adminer в списке стеков.

Удаление Portainer
Чтобы полностью удалить все, что было установлено этими командами, вам нужно выполнить следующие шаги:
Остановите и удалите контейнер Portainer:
sudo docker stop portainer sudo docker rm portainerУдалите Docker volume, который был создан для хранения данных Portainer:
sudo docker volume rm portainer_dataПроверьте и удалите ненужные Docker образы (если они больше не нужны):
sudo docker rmi portainer/portainer-ce
-
Установка Portainer в Docker (Вариант 2)
Portainer в Docker — самый правильный и современный вариант 2025 года
(одним файлом docker-compose.yml + HTTPS + Nginx Proxy Manager / Caddy)
«Золотой стандарт» 2025 года — именно так ставят 99 % людей:
mkdir -p ~/portainer && cd ~/portainer# docker-compose.yml — вечная классика 2025 cat > docker-compose.yml << 'EOF' version: "3.9" services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: unless-stopped security_opt: - no-new-privileges:true volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - data:/data ports: - "9000:9000" # веб-интерфейс - "9443:9443" # HTTPS (встроенный в Portainer) - "8000:8000" # для Edge Agent (если будешь подключать удалённые хосты) environment: - TZ=Europe/Moscow # (Опционально) Caddy — сразу HTTPS на 443 → Portainer caddy: image: caddy:2-alpine restart: unless-stopped ports: - "80:80" - "443:443" - "443:443/udp" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config volumes: data: caddy_data: caddy_config: EOF# Caddyfile — автоматический Let’s Encrypt cat > Caddyfile << 'EOF' portainer.твой-домен.рф { reverse_proxy localhost:9443 tls admin@твой-домен.рф } EOFdocker compose up -dГотово!
Через 30–60 секунд будет доступно сразу два адреса:- https://portainer.твой-домен.рф — с нормальным сертификатом
- https://IP-сервера:9443 — встроенный HTTPS Portainer
- http://IP-сервера:9000 — старый порт (можно закрыть)
Первый вход (2025)
- Логин:
admin - Пароль: минимум 12 символов
- Сразу снимай галочку «Send anonymous usage statistics»
Полезные команды 2025
# Обновить Portainer до последней версии docker compose pull && docker compose up -d # Полные логи docker compose logs -f portainer # Полный бэкап (одна команда) docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine tar -czf /backup/portainer-backup-$(date +%F).tar.gz -C /data . # Восстановление docker compose down docker run --rm -v portainer_data:/data -v ./portainer-backup-2025-12-01.tar.gz:/backup.tar.gz alpine sh -c "tar -xzf /backup.tar.gz -C /data --strip-components=1" docker compose up -dПолное удаление (если вдруг надо)
cd ~/portainer docker compose down -v --remove-orphans docker volume rm portainer_data portainer_caddy_data portainer_caddy_config docker rmi portainer/portainer-ce caddy:2-alpine