5 альтернатив Docker для локальной разработки
Сравните пять альтернатив Docker Desktop для локальной разработки: Podman, OrbStack, Colima, Rancher Desktop и Lima. Узнайте о системах, цене и совместимости с Docker и Compose.
Для локальной разработки стоит протестировать пять альтернатив Docker Desktop: Podman с Podman Desktop, OrbStack, Colima, Rancher Desktop и Lima с nerdctl. Лишь некоторые из них оставляют за вашими командами docker настоящий Docker Engine.
Возможно, вентиляторы раскручиваются, стоит только запустить контейнер с Postgres. Или кто-то из финансового отдела поинтересовался, за сколько лицензий Docker Desktop платит компания. В любом случае вам нужно понять, какая замена по-прежнему справится с вашими скриптами docker run и Compose-файлом.
Основы работы с образами и контейнерами в этом сравнении не рассматриваются — о них рассказывает руководство для начинающих по образам и контейнерам Docker. Каждый инструмент оценивается по одним и тем же критериям: поддерживаемые операционные системы, стоимость, движок, совместимость с docker CLI, совместимость с Compose, для кого он подходит, а также команды для установки и запуска первого контейнера.
Ключевые выводы
- Docker Desktop бесплатен для компаний, в которых работает меньше 250 сотрудников и годовая выручка составляет менее 10 млн долларов. Более крупным компаниям нужна платная подписка Pro, Team или Business.
- OrbStack и Colima (в режиме по умолчанию) запускают Docker Engine в более легковесной ВМ. Podman и containerd с nerdctl полностью заменяют движок.
- На macOS и Windows все инструменты из этого сравнения по-прежнему запускают Linux-контейнеры внутри виртуальной машины.
- Команда
podman composeсуществует, но передаёт работу внешнему провайдеру (docker-compose или podman-compose), и один из них должен быть установлен. - Если после смены инструмента
dockerперестал работать, выполнитеdocker context ls, чтобы увидеть, на какой эндпоинт движка указывает CLI.
Почему разработчики ищут альтернативы Docker для локальной работы?
Обычно разработчики отказываются от Docker Desktop по одной из трёх причин: лицензирование, потребление ресурсов или скорость работы с файлами на macOS.
- Лицензия. Согласно условиям лицензии Docker Desktop, приложение бесплатно для личного использования, образования, некоммерческих open-source-проектов и компаний, в которых работает меньше 250 сотрудников и годовая выручка составляет менее 10 млн долларов. Компании, превышающей любой из этих порогов, нужна платная подписка Pro, Team или Business.
- Память и батарея. На macOS и Windows Docker Desktop держит запущенной Linux-ВМ, пока работает хотя бы один контейнер, и эта ВМ потребляет память и энергию, даже когда контейнеры простаивают. Режим Resource Saver в Docker Desktop останавливает ВМ, только если контейнеры не запускались в течение некоторого времени (по умолчанию пять минут).
- Bind mounts. На macOS файлы, примонтированные с хоста в контейнер, вынуждены пересекать границу ВМ. В документации Docker прямо отмечается, что по мере роста кодовой базы bind mounts могут работать медленно, — именно поэтому в Docker Desktop появились синхронизированные общие папки (synchronized file shares). Замедление особенно заметно на больших деревьях
node_modulesи при работе file watchers.
Что на самом деле заменяет каждая альтернатива Docker?
Docker Desktop — это десктопное приложение, объединяющее Linux-ВМ, Docker Engine и графический интерфейс. Заменить Docker Desktop не означает заменить Docker Engine. Альтернативы делятся на две группы:
| Группа | Инструменты | С чем взаимодействует команда docker |
|---|---|---|
| Docker Engine в более легковесной ВМ | OrbStack, Colima (среда выполнения по умолчанию), Rancher Desktop (режим moby) | С настоящим демоном Docker |
| Движок заменён | Podman, Lima/containerd с nerdctl, Rancher Desktop (режим containerd) | С Docker-совместимым API Podman, а в случае nerdctl — ни с чем. В основном вы используете CLI, копирующий синтаксис Docker |
В группе с Docker Engine docker CLI и Compose продолжают работать с демоном Docker. В группе с заменённым движком совместимость с Docker обеспечивается слоем командной строки, повторяющим синтаксис Docker, а в случае Podman — ещё и сокетом, который отвечает на вызовы Docker API. На macOS и Windows все перечисленные инструменты по-прежнему запускают Linux-контейнеры внутри ВМ. Смена инструмента меняет то, как управляется эта ВМ, но не избавляет от неё.
Почему docker перестаёт работать после смены инструмента?
docker CLI подключается к тому сокету, на который указывает переменная DOCKER_HOST или активный контекст Docker. Если после установки альтернативы команды завершаются с ошибкой, скорее всего, CLI направлен на сокет, за которым нет движка. Наше руководство по устранению ошибок «Docker daemon not running» подробно разбирает сообщения об ошибках.
docker context ls # the active endpoint is marked with *
docker context use colima # point the CLI at another engine
Протестировать альтернативу можно, не удаляя Docker Desktop. Переключите контекст, чтобы опробовать новый инструмент, а затем переключитесь обратно.
Compose-файл для проверки каждого инструмента
Используйте один минимальный файл для проверки всех инструментов. Предварительно прогоните его через валидатор YAML, чтобы любая ошибка была вызвана инструментом, а не опечаткой.
# compose.yaml
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
ports:
- "5432:5432"
Сравнение альтернатив Docker
| Инструмент | ОС | Стоимость | Движок | docker CLI | Compose |
|---|---|---|---|---|---|
| Podman + Podman Desktop | macOS, Windows, Linux | Бесплатно, open source | Podman | Через алиас или API-сокет | podman compose + провайдер |
| OrbStack | macOS | Бесплатно для личного использования, платно для коммерческого | Docker Engine | Да | Да, входит в комплект |
| Colima | macOS, Linux | Бесплатно, open source | Docker (по умолчанию) | Да, устанавливается отдельно | Compose устанавливается отдельно |
| Rancher Desktop | macOS, Windows, Linux | Бесплатно | containerd или moby | В режиме moby | nerdctl compose или docker compose |
| Lima + nerdctl | macOS, Linux | Бесплатно, open source | containerd | Нет (nerdctl) | nerdctl compose |
Podman с Podman Desktop
Podman заменяет движок Docker и работает без демона. Podman Desktop — бесплатное приложение с открытым исходным кодом для macOS, Windows и Linux. На Mac и Windows вы получаете нативную команду podman, а контейнеры работают в Linux-ВМ, которую Podman называет Podman machine.
- docker CLI: команды Podman используют синтаксис Docker, поэтому
alias docker=podmanпокрывает большую часть повседневных задач. На Mac и Windows Podman также принимает запросы от клиентов Docker API, так что вместо алиаса можно направить на его сокет настоящий docker CLI и инструменты, работающие с Docker. - Compose: команда
podman composeвстроена, но это тонкая обёртка, передающая работу docker-compose или podman-compose. Сначала установите один из них. - Кому подходит: командам, которым нужен один бесплатный инструмент для macOS, Windows и Linux.
brew install podman
podman machine init
podman machine start
podman run --rm hello-world
podman compose up
Документация по установке Podman рекомендует на macOS использовать официальный установщик, а не Homebrew. У Podman Desktop собственный установщик.
OrbStack
OrbStack — приложение только для macOS. Оно поставляется с движком Docker и инструментами Compose и стремится вести себя как Docker Desktop, поэтому docker CLI и Compose работают без изменений.
- Стоимость: согласно условиям лицензирования OrbStack, инструмент бесплатен для личного использования. Для фриланса, бизнеса и некоммерческих организаций требуется платная лицензия на каждого пользователя.
- Compose: входит в комплект.
- Кому подходит: командам, работающим только на Mac, которым нужен привычный рабочий процесс Docker Desktop с другим слоем виртуализации. Конфигурации на уровне проекта, такие как Dev Containers для локальной разработки, тоже продолжают работать.
brew install --cask orbstack
docker run --rm hello-world
docker compose up
Colima
Colima — бесплатный инструмент командной строки для macOS (Intel и Apple Silicon) и Linux. Со средой выполнения Docker, используемой по умолчанию, Colima запускает движок Docker внутри ВМ. Также доступны среды выполнения containerd и Incus.
- docker CLI: устанавливается отдельно.
- Compose: не входит в комплект. Установите формулу
docker-composeиз Homebrew, а затем создайте на неё ссылку в~/.docker/cli-plugins, чтобы работала командаdocker compose. - Кому подходит: разработчикам, которые живут в терминале и не нуждаются в GUI.
brew install colima docker docker-compose
mkdir -p ~/.docker/cli-plugins
ln -sfn "$(brew --prefix)/opt/docker-compose/bin/docker-compose" ~/.docker/cli-plugins/docker-compose
colima start
docker run --rm hello-world
docker compose up
Если запустить Colima со средой выполнения containerd, контейнеры запускаются через colima nerdctl, а не через docker.
Rancher Desktop
Rancher Desktop работает на macOS (Intel и Apple Silicon), Windows и Linux. В качестве движка Rancher Desktop может использовать containerd или dockerd (moby). При выборе moby включается Docker API, и docker CLI работает без алиасов.
- Compose: в руководстве по работе с контейнерами описано использование Compose как через
nerdctl compose, так и черезdocker compose. - Нюансы: одновременно активна только одна среда выполнения. Образы, загруженные в одной среде, недоступны после переключения на другую. Встроенный Kubernetes можно отключить.
- Кому подходит: кроссплатформенным командам, которым нужны GUI и Docker API.
rdctl set --container-engine.name=moby
docker run --rm hello-world
То же изменение можно внести в приложении в разделе Preferences > Container Engine, как описано в документации по настройкам движка.
Lima с containerd и nerdctl
Lima запускает виртуальные машины Linux с автоматическим общим доступом к файлам и пробросом портов. Шаблон по умолчанию использует containerd. Lima также поддерживает хосты помимо macOS, например Linux и NetBSD.
- docker CLI: не используется. nerdctl повторяет команды Docker и вызывается как
lima nerdctl. - Compose:
nerdctl composeреализует спецификацию Compose. Некоторые поля, напримерlinks, не реализованы — их список приведён в заметках nerdctl о Compose. - Кому подходит: разработчикам, которые предпочитают собирать стек из open-source-компонентов самостоятельно. Если вы всё же хотите запускать Docker Engine, у Lima есть шаблон
docker.
brew install lima
limactl start
lima nerdctl run --rm hello-world
lima nerdctl compose up
Как выбрать альтернативу Docker?
Операционная система отсекает часть альтернатив ещё до сравнения возможностей. OrbStack работает только на macOS, а у Colima нет сборки для Windows. Если нужен один инструмент для macOS, Windows и Linux, остаются Podman Desktop и Rancher Desktop. Если ваши Compose-файлы и скрипты должны работать без изменений, выбирайте инструмент с Docker Engine: OrbStack, Colima или Rancher Desktop в режиме moby. Если же вы хотите полностью отказаться от демона Docker, выбирайте Podman.
Заключение
Главный вопрос — сохраняет инструмент Docker Engine или заменяет его. Именно это различие определяет, перенесутся ли ваши команды docker и Compose-файлы без изменений. Выберите инструмент, подходящий под вашу ОС и лицензионную ситуацию, прогоните на нём приведённый выше compose.yaml и проверьте docker context ls, прежде чем удалять Docker Desktop.
Часто задаваемые вопросы
Распространяется ли лицензия Docker Desktop на Docker Engine в Linux?
Нет. Docker Engine распространяется с открытым исходным кодом под лицензией Apache License 2.0, поэтому для коммерческого использования нет ограничений по числу сотрудников или выручке. Пороги в 250 сотрудников и 10 млн долларов взяты из Docker Subscription Service Agreement, которое распространяется на Docker Desktop и поставляемый внутри него Engine. На рабочей станции с Linux прямая установка Docker Engine снимает вопрос о лицензии Desktop и избавляет от лишнего слоя ВМ.
Переносятся ли образы и тома Docker Desktop при смене инструмента?
Автоматически их переносит только OrbStack. После установки он предлагает скопировать контейнеры, тома и образы Docker Desktop, а эта опция остаётся доступной в меню File > Migrate Docker Data. Создаётся копия, поэтому исходные данные остаются на месте. Для Colima, Podman или Rancher Desktop экспортируйте образы с помощью docker save, загрузите их в новый движок, а именованные тома сохраните в виде tar-архивов.
Работает ли Testcontainers с Podman вместо Docker?
Да, через Docker-совместимый API-сокет Podman. Укажите в DOCKER_HOST сокет Podman. На macOS путь к нему можно получить командой podman machine inspect; кроме того, нужно задать TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE со значением /var/run/docker.sock. В Linux сокет находится по пути podman/podman.sock внутри XDG_RUNTIME_DIR. В rootless-режиме задайте TESTCONTAINERS_RYUK_DISABLED=true, чтобы отключить контейнер очистки Ryuk. Команда Testcontainers не тестирует альтернативные среды выполнения на регулярной основе, поэтому некоторые функции могут не работать.
Могут ли VS Code Dev Containers использовать Podman вместо Docker?
Да. Установите для параметра Dev Containers Docker Path (dev.containers.dockerPath) значение podman в Linux, Windows или macOS. Расширение выполняет команды CLI контейнеров и никогда не обращается к демону напрямую. По описанию VS Code, Podman 5 и более поздние версии в основном совместимы с CLI Docker, однако другие Docker-совместимые CLI официально не поддерживаются. Для dev-контейнеров на основе Compose также необходимо настроить провайдер Compose.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.
Star on GitHub12k