База знаний (цифровой суверенитет)
  • Установка Portainer в Docker

    Перенесена
    Portainer
    1 2 10 1

    A
    1,168
    0

    Установка 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, можно так оставить.

    portainer.jpg

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

    Если не сразу задать пароль, и оставить окно в таком состоянии на некоторое время, то после создания пользователя Portainer оповестит об истечении времени жизни экземпляра по соображениям безопасности, и попросит перезапустить Portainer.

    portainer2.jpg

    Перезапускаем командой

    sudo docker restart portainer
    

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

    portainer3.jpg

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

    portainer4.jpg

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

    Жмём на область с информацией о компьютере Local. Окно станет таким:

    portainer5.jpg

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

    portainer6.jpg

    Удаление 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
    

  • A
    1,168
    0

    Установка 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@твой-домен.рф
    }
    EOF
    
    docker compose up -d
    

    Готово!
    Через 30–60 секунд будет доступно сразу два адреса:

    Первый вход (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
    
  • A Admin переместил эту тему из Portainer в
  • A Admin переместил эту тему из в