Один неправильно работающий контейнер может вывести домашнюю лабораторию из строя. Одна перекодировка Jellyfin, один переиндекс Immich, один запрос из базы данных Home Assistant — и вот уже Pi-hole теряет DNS запросы, а Nextcloud истекает по времени. Решение заключается не в добавлении оперативной памяти. Решение — это ограничения. Каждый контейнер получает потолок памяти, лимит CPU и вес блочного I/O, и шумный сосед остаётся в своём коридоре. Именно эту историю недавно рассказал автор XDA после того, как наконец установил mem_limit, cpus: и blkio-weight на каждый контейнер в своём стеке. Надёжность пришла от ограничений, а не от железа.
За последние несколько недель мы протестировали лучшие приложения для управления ресурсами Docker контейнеров на трёх десктопных платформах, которые имеют значение для self-hostеров: Windows (через WSL или Docker Desktop), macOS и Linux. Мы смотрели на веб-интерфейсы, терминальные интерфейсы и полноценные операционные системы для self-hosting, и мы оценивали их по одному вопросу. Как быстро вы можете установить cpus: 2.0 и mem_limit: 1g на все контейнеры в одном месте? Эти семь приложений заслужили место в вашей системе.
На что обратить внимание в менеджере ресурсов Docker
Не каждый Docker GUI создан для ограничения ресурсов. Несколько вещей отличают те, которые стоят установки, от тех, которые просто показывают список ваших контейнеров с красивыми иконками.
- Ограничения CPU и памяти на контейнер из интерфейса, а не только из файла compose, который вы редактируете вручную
- Прямые статистики CPU, памяти и сети на контейнер, чтобы вы могли заметить обжору перед тем, как его ограничить
- Поддержка редактирования запущенного compose стека на месте, включая переразвёртывание при изменении ограничений
- Доступ к
docker updateпод капотом, чтобы вы могли ограничить уже запущенный контейнер без перезагрузки - Чёткий вид того, что установлено, а что нет, потому что неограниченные контейнеры — это именно те, которые вас укусят
- Поддержка нескольких хостов, если вы запускаете Docker на более чем одной машине (NAS плюс мини-ПК — это типичный случай)
Быстрое сравнение
| Приложение | Лучше всего для | Платформы | Лицензия | Цена |
|---|---|---|---|---|
| Portainer | Полный контроль GUI над стеками и ограничениями | Windows, macOS, Linux | Бесплатно CE, платно BE | Бесплатно / от примерно $155 за узел/год |
| Dockge | Редактирование compose в первую очередь с живыми статистиками | Windows, macOS, Linux | Open source | Бесплатно |
| Docker Desktop | Нативные ограничения на контейнер на Mac и Windows | Windows, macOS, Linux | Бесплатно для персональных, платно для teams | Бесплатно / от $9 за пользователя/месяц |
| CasaOS | Начинающая homelab ОС с app store | Linux (Debian/Ubuntu/Pi) | Open source | Бесплатно |
| Runtipi | Куратированный homelab app store с хорошими настройками по умолчанию | Linux | Open source | Бесплатно |
| Yacht | Лёгкий веб-интерфейс для Docker на одном хосте | Windows, macOS, Linux | Open source | Бесплатно |
| Lazydocker | Терминальный интерфейс для быстрой диагностики и проверки CPU/памяти | Windows, macOS, Linux | Open source | Бесплатно |
Приложения
1. Portainer, лучше всего для полного контроля GUI над каждым контейнером
Portainer — это инструмент, на котором оказываются большинство self-hostеров, как только их стек вырастает за четыре-пять контейнеров. Community Edition бесплатна, запускается как один Docker контейнер и даёт вам браузерную консоль для каждого контейнера, образа, сети, тома и стека на одном или нескольких Docker хостах. Для ограничения ресурсов в частности, вид редактирования контейнера открывает лимит CPU (как количество vCPU), резервирование памяти и лимит памяти, и он применит их горячим способом через docker update без пересоздания контейнера. Стеки (файлы compose) можно редактировать встроенно, и Portainer переразвёртывает их при сохранении.
Вид нескольких хостов — это то, что толкает его дальше, чем более лёгкие варианты. Если вы запускаете Docker на NAS и мини-ПК, одна установка Portainer может управлять обоими, и панель ресурсов показывает, какой хост находится под нагрузкой, прежде чем вы что-то ограничите.
Где он отстаёт: Бесплатная Community Edition отбрасывает несколько функций в платный Business Edition уровень, включая RBAC для каждого пользователя более чем для трёх пользователей и контракты поддержки. Он также не охватывает вес блочного I/O из интерфейса, поэтому blkio-weight всё ещё живёт в вашем файле compose.
Цена: Community Edition бесплатна для неограниченного количества узлов. Business Edition начинается с примерно $155 за узел в год с дополнительными скидками и бесплатной лицензией на 5 узлов для домашнего использования.
Платформы: Работает везде, где работает Docker. На десктопе это Windows (WSL или Docker Desktop), macOS (Docker Desktop или Colima) и Linux.
Скачать: Сайт издателя · GitHub
Итоговая строка: Если вы хотите одну панель для просмотра и ограничения каждого контейнера на каждой машине, которой вы владеете, Portainer — это ответ по умолчанию.
2. Dockge, лучше всего бесплатный менеджер, ориентированный на compose
Dockge принимает противоположный подход к Portainer. Вместо управления контейнерами как объектами первого класса, он рассматривает файлы compose как источник истины. Вы редактируете docker-compose.yaml в браузере, нажимаете развернуть, и Dockge останавливает, пересоздаёт и перезапускает стек. Это именно то рабочее разделение, которое вам нужно, когда вы добавляете mem_limit: 512m и cpus: '0.5' каждому сервису под deploy.resources и хотите видеть изменение сразу.
Интерфейс намеренно скромен: список стеков слева, редактор compose и терминал справа, прямые показания CPU и памяти поперёк верхней части. Это написано тем же разработчиком, что и Uptime Kuma, поэтому полировка реальна, и установка — это один Docker контейнер.
Где он отстаёт: Только один хост. Если вам нужно управлять более чем одной машиной Docker с одного экрана, Dockge этого не сделает. Он также предполагает, что вы комфортно пишете файлы compose, поэтому это не выбор для того, кто никогда раньше не видел YAML.
Цена: Бесплатно, open source под лицензией MIT.
Платформы: Работает везде, где работает Docker. Хорошо работает на Linux сервере, доступном из браузера Windows, macOS или Linux.
Скачать: GitHub
Итоговая строка: Лучший бесплатный выбор, если ваши контейнеры уже живут в файлах compose и вы хотите ограничить их там без выхода из браузера.
3. Docker Desktop, лучше всего встроенный вариант на Windows и macOS
Docker Desktop поставляется с элементами управления ресурсами, которые большинство пользователей никогда не открывают. На Windows и macOS панель Resources ограничивает всю Docker виртуальную машину (память, CPU, подкачка, размер образа диска), что является вашей подушкой безопасности для сохранения Docker от поедания вашего ноутбука. Поверх этого, ограничения отдельных контейнеров всё ещё работают как обычно через CLI, файлы compose и диалог редактирования контейнера настольного интерфейса в последних версиях.
Причина, по которой она в этом списке, состоит в том, что она уже установлена на большинство машин. Если вы ещё не прошли через Settings Docker Desktop и не установили жёсткий потолок памяти и CPU на двигатель, сделайте это в первую очередь. Каждое ограничение контейнера ниже опирается на эту внешнюю границу.
Где он отстаёт: Ограничения на уровне двигателя — это звезда шоу; редактирование контейнеров в настольном интерфейсе функционально, но скромно. На Linux настольное приложение опционально, большинство людей используют демон напрямую. Коммерческое использование выше 250 сотрудников или $10M дохода требует платной подписки.
Цена: Бесплатно для личного использования, образования, малого бизнеса и open source. Pro стоит $9 за пользователя в месяц, Team $15, Business $24.
Платформы: Windows, macOS, Linux.
Скачать: Docker.com
Итоговая строка: Сначала установите ограничение на уровне двигателя, затем наложите другой инструмент сверху для ограничений на контейнер. Бесплатно для большинства домашних пользователей.
4. CasaOS, лучше всего для начинающих homelab
CasaOS — это полный слой операционной системы для self-hosting, который находится поверх Debian, Ubuntu, Raspberry Pi OS или аналогичного. Установите его с помощью скрипта в одну строку и вы получите домашний экран, похожий на телефон, app store с однокликовыми установщиками (Jellyfin, Immich, Pi-hole, Home Assistant и около 150 других) и вид контейнера, который показывает CPU и память на приложение в реальном времени. Для каждого установленного контейнера вы можете открыть настройки и установить лимит памяти, доли CPU, и сопоставления портов и томов без касания файла compose.
Это инструмент, который мы поставили бы перед другом, который купил мини-ПК для запуска Plex и Home Assistant и никогда не открывал терминал. Ограничения находятся на расстоянии одного слайдера, и интерфейс делает очевидным, какие контейнеры неограниченны.
Где он отстаёт: Один хост, только Linux, и мнение. App store курирует определённый набор образов, поэтому пользовательские или вне-каталога контейнеры работают через импортер compose, но не извлекают выгоду из однокликового UX. Темп разработки замедлился по сравнению с парой лет назад, хотя проект все ещё активно поддерживается.
Цена: Бесплатно, open source под лицензией Apache 2.0.
Платформы: Только Linux (Debian, Ubuntu, Raspberry Pi OS, Fedora, Arch). Доступ из любого настольного браузера.
Скачать: Сайт издателя · GitHub
Итоговая строка: Самый простой способ запустить небольшую homelab с разумными ограничениями на приложение, если машина — это выделенный Linux ящик.
5. Runtipi, лучше всего куратированная homelab альтернатива CasaOS
Runtipi охватывает ту же территорию, что и CasaOS (app store, однокликовые установки, настройки на приложение), но ощущается более современным и движется быстрее. App store теперь охватывает несколько сотен контейнеризованных приложений, все упакованные с хорошими настройками по умолчанию, переменные окружения выведены в интерфейс и настройки ресурсов выведены на приложение. Ограничения, которые вы устанавливаете в конфигурации приложения, переводятся в стандартные ограничения Docker при развёртывании.
Мы предпочитаем Runtipi CasaOS, когда пользователь счастливее читать документацию, так как настройки открывают больше параметров. Он также имеет лучшую поддержку нескольких архитектур и более чистый поток обновления.
Где он отстаёт: Также один хост и только Linux. Приложения, которые не в магазине, всё ещё нуждаются в файле compose, импортированном через определение пользовательского приложения. Сообщество меньше, чем у Portainer или CasaOS, поэтому неясные интеграции требуют большего копания.
Цена: Бесплатно, open source.
Платформы: Linux (Debian, Ubuntu и производные). Доступ в браузер с любого десктопа.
Скачать: Сайт издателя · GitHub
Итоговая строка: Выбор, если CasaOS ощущается на один шаг слишком простым, а Portainer на один шаг слишком сырым.
6. Yacht, лучше всего лёгкий веб-интерфейс
Yacht — это более маленький и быстрый веб-интерфейс в том же пространстве, что и Portainer, ориентированный на пользователей, которые хотят чистый список контейнеров, однокликовые шаблоны и панель настроек, которая включает ограничения CPU и памяти без дополнительной поверхности управления стеками или многохостовой оркестровки. Шаблоны живут в JSON файлах и могут быть обобществлены сообществом, что упрощает развёртывание образа с хорошими ограничениями запечённными внутри.
Для одного Docker хоста, где вы в основном заботитесь о запуске, остановке, ограничении и обновлении контейнеров, Yacht быстрее выучить, чем Portainer и держит весь поток внутри двух-трёх экранов.
Где он отстаёт: Разработка намного медленнее, чем у Portainer или Dockge, и проект долгое время был в бета-версии. Многохостовая версия не в дорожной карте. Некоторые более новые функции Docker приземляются позже здесь, чем в больших инструментах.
Цена: Бесплатно, open source.
Платформы: Работает везде, где работает Docker. Доступ в браузер с любого десктопа.
Скачать: GitHub
Итоговая строка: Опрятный веб-интерфейс для одного Docker хоста, когда Portainer ощущается как чрезмерный.
7. Lazydocker, лучше всего терминальный интерфейс для быстрой диагностики
Lazydocker — это не менеджер, это монитор с руками. Запустите его в терминале и вы получите управляемый с клавиатуры вид каждого контейнера с прямой CPU, памятью, блочным I/O и сетевыми графиками, плюс панели статистики, логи и ярлык оболочки. Когда один контейнер скачет, lazydocker показывает вам какой за секунды, и вы можете перезапустить, остановить или открыть оболочку без выхода из панели.
Для фактического установления ограничений вы спускаетесь в оболочку (e открывает контейнер в $EDITOR или docker exec) и используете docker update --cpus 2 --memory 1g <name> или редактируете файл compose. Это инструмент, который вы держите в расколе tmux рядом с любым веб-интерфейсом, который является вашим основным.
Где он отстаёт: Нет редактирования UI для compose или ограничений запуска, вам нужно печатать CLI. Только Docker, нет Kubernetes.
Цена: Бесплатно, open source под лицензией MIT.
Платформы: Windows (через WSL или PowerShell), macOS, Linux. Установка через Homebrew, Scoop, Nix или Go двоичный файл.
Скачать: GitHub
Итоговая строка: Самый быстрый способ увидеть, какой контейнер неправильно работает прямо сейчас, и запустить docker update, который его ограничит.
Как выбрать правильный
- Если вы запускаете Docker на более чем одной машине и хотите одну панель: Portainer.
- Если ваши стеки уже живут в файлах compose: Dockge.
- Если вы используете Docker Desktop и хотите начать с самого безопасного ограничения в первую очередь: Панель Resources Docker Desktop, затем наложите другой инструмент сверху.
- Если вы или кто-то, кому вы помогаете, новичок в homelabs: CasaOS.
- Если CasaOS ощущается слишком просто, а Portainer слишком сыро: Runtipi.
- Если вы хотите самый лёгкий веб-интерфейс на одном хосте: Yacht.
- Если вы живёте в терминале и хотите реальное изображение того, что ест CPU: Lazydocker.
Большинство self-hostеров в конце концов получают два. Веб-интерфейс для установления ограничений и чтения состояния, плюс Lazydocker в запасном терминале для момента, когда контейнер начинает неправильно работать.
FAQ
Какое лучше бесплатное приложение для управления Docker контейнерами на десктопе?
Portainer Community Edition — это сильнейший бесплатный выбор, потому что он охватывает редактирование контейнеров, стеки, многохостовость и прямые статистики в одном браузерном интерфейсе без paywall. Для рабочего разделения, сориентированного на compose, Dockge — лучший бесплатный выбор.
Как я устанавливаю ограничение CPU и памяти на Docker контейнер?
В файле compose добавьте deploy.resources.limits.cpus: '2.0' и deploy.resources.limits.memory: 1G под сервисом, или используйте старые верхние уровни cpus: 2.0 и mem_limit: 1g. На запущенном контейнере docker update --cpus 2 --memory 1g <name> применяет изменение без перезагрузки. Portainer, Dockge, CasaOS, Runtipi и Yacht все открывают эти настройки в интерфейсе.
Может ли Docker Desktop ограничить отдельные контейнеры?
Панель Resources Docker Desktop ограничивает всю Docker виртуальную машину на Windows и macOS, а не отдельные контейнеры. Ограничения на контейнер всё ещё поступают из файлов compose, флагов docker run или менеджера, такого как Portainer, который работает поверх одного двигателя.
Портainer или Dockge лучше для homelab?
Portainer, если у вас более чем один Docker хост или вы хотите полный менеджер контейнеров. Dockge, если все ваши сервисы уже живут в файлах compose на одном хосте и вы хотите самый быстрый цикл редактирования. Многие homelabbers устанавливают оба и используют каждого для того, что это делает лучше всего.
Какая разница между CasaOS и Runtipi?
Оба — это установка в одну строку homelab OS слои с куратированным app store и настройками на приложение. CasaOS более дружелюбна для начинающих с более медленным темпом изменений; Runtipi открывает больше конфигурации и доставляет новые приложения быстрее. Попробуйте CasaOS в первую очередь, если простота имеет значение, Runtipi, если вы планируете настраивать вещи.
Эти инструменты работают через WSL на Windows?
Да. Любые из семи работают в контейнере на Docker двигателе внутри WSL 2, и вы получаете доступ к веб-интерфейсу из браузера Windows в localhost. Lazydocker также запускается прямо внутри оболочки WSL.