Альтернатива Docker Desktop для MacOS

В современной разработке программного обеспечения использование контейнеризации стало стандартной практикой и Docker, вероятно является наиболее распространенной платформой для этого. Однако в свете изменений в лицензировании Docker Desktop, которое теперь требует покупки версии Enterprise для коммерческого использования, многие разработчики и компании ищут альтернативы.

В этой статье я рассмотрю альтернативу Docker Desktop, которая может оказаться подходящим решением для пользователей Mac Apple Silicon M1/M2 и Intel, не имеющих возможность приобрести или использовать платную версию Docker Desktop.

.wpj-jtoc.—jtoc-theme-basic-light.—jtoc-has-custom-styles {
—jtoc-numeration-suffix: «. «;
—jtoc-numeration-color: #adadad;
}

Причины отказаться от Docker Desktop

Для крупных организаций где количество разработчиков может достигать сотен или даже десятков тысяч, стоимость лицензий Docker Desktop может оказаться значительной.

Давайте рассмотри корпоративный прайс Docker Desktop:

Альтернатива Docker Desktop для MacOS

Если у вас маленькая команда до 100чел, вам необходимо будет платить 9$ за человека в месяц, но если у вас Enterprise на тысячи человек, то цена уже за лицензию будет стоять 24$ за пользователя в месяц.

На первый взгляд не так и много, но давайте подсчитаем потенциальные затраты компании на покупку лицензий для 1000 человек на 1 год.

  • Количество разработчиков: 1000
  • Стоимость одной лицензии: 24$
  • Количество месяцев: 12

Итого: 1000*24*12 = 288 000$

В итоге мы получили 288 000 долларов США в год для компании из 1000 разработчиков, что является значительной суммой, для компаний стремящихся оптимизировать свои расходы.
Эти деньги компания могла бы инвестировать в развитие бизнеса или направить на увеличение зарплат сотрудникам с целью удержания в компании.

Один из вариантов оптимизации затрат компании — это переход на бесплатные аналоги. Далее мы поговорим про один из них.

Colima — Бесплатная альтернатива Docker Desktop для Mac

Colima — это инструмент для управления контейнерами Docker на MacOS и Linux, который гарантирует стабильную работу Docker CLI, и решает задачи по пробросу портов и монтированию volumes. Он является легковесной и эффективной опенсорс альтернативой Docker Desktop. У него отсутствует привычный GUI интерфейс, только CLI версия.

Для создания изолированной виртуальной машины для Docker, Colima использует VM Lima.
Colima так-же предоставляет интерфейс командной строки для управления VMs и контейнерами с помощью простых команд, а так-же позволяет запускать несколько VMs локально.
Кроме того, Colima поддерживает Kubernetes, что дает разработчикам гибкие возможности для оркестрации контейнеров и управления микросервисами прямо на своих локальных машинах.

Все это делает Colima мощным инструментом для тех, кто ищет альтернативу Docker Desktop на платформе MacOS.

Colima - альтернатива Docker Desktop для MacOS

GitHub Repository

https://github.com/abiosoft/colima

Установка

  1. Для начала необходимо удалить Docker Desktop (если он у вас установлен).
  2. Теперь установим Docker CLI и Docker Compose используя Homebrew
brew install docker
brew install docker-compose
  1. Установим Colima
brew install --HEAD colima
  1. Теперь когда приложение Colima установлено, нам необходимо запустить VM
// Для процессоров Apple Silicon (M1/M2/ARM)
// Требуется Lima >= 0.14, macOS >= 13.0 (Ventura)
colima start --arch aarch64 --vm-type=vz --vz-rosetta

// Для Mac на Intel, можете использовать следующие команды:
colima start
// или, но требуется Lima >= 0.14, macOS >= 13.0
colima start --vm-type=vz


Флаги команды:

  • --arch aarch64 : Установите виртуальную машину для использования архитектуры ARM64, совместимой с вашим процессором.
  • --vm-type=vz : Установите тип виртуальной машины (qemu, vz) (по умолчанию «qemu»)
    • vz — вариант использует собственную поддержку виртуализации, предоставляемую MacOS Virtualization.Framework.

      Virtualization.Framework предоставляет высокоуровневые и быстрые API для создания и управления виртуальными машинами (VM) на компьютерах Mac с процессорами Apple Silicon и Intel. Используйте его для загрузки и выполнения операционных систем MacOS или Linux в пользовательских средах, которые вы определяете.

      vz режим является эксперементальным — но это чуть ли не единственный вариант который позволяет запускать контейнеры на Apple Silicon CPU.

    • qemu — вариант использует QEMU для запуска гостевой операционной системы. Эта опция используется по умолчанию, если «vmType» не установлен.

      QEMU — это эмулятор с открытым исходным кодом и виртуализатор, который позволяет пользователям запускать несколько операционных систем на одном физическом хосте. Он поддерживает различные архитектуры процессоров и широко используется для разработки, тестирования и целей виртуализации. QEMU обеспечивает почти нативную производительность за счет выполнения гостевого кода непосредственно на процессоре хоста с поддержкой аппаратной виртуализации.

  • --vz-rosetta : активирует Rosetta для эмуляции amd64 (x86_64) при использовании виртуальной машины ARM64.

О Rosetta

Rosetta — динамический двоичный транслятор, разработанный компанией Apple Inc для своих операционных систем (macOS) для совместимости приложений между различными архитектурами набора команд. Это позволяет переходить на более новое оборудование за счет автоматического перевода программного обеспечения.
———
В 2020 году компания Apple объявила о том, что Rosetta 2 будет поставляться в комплекте с MacOS Big Sur, что поможет в переходе на процессор Apple Silicon (ARM). Это программное обеспечение позволяет переводить многие приложения, скомпилированные исключительно для выполнения на процессорах x86-64, для выполнения на процессорах Apple.

Взято с Wikipedia

Чтобы выбрать наилучший для вас vmType (--vm-type) смотрите блок схему ниже:

Colima - альтернатива Docker Desktop для MacOS
Как правильно выбрать тип vmType, изображение было взято с ресурса.
  1. Чтобы убедиться что VM запущена, выполните следующую команду
colima status
Colima - альтернатива Docker Desktop для MacOS

Теперь вы можете спокойно запускать ваши Docker и Docker Compose проекты используя привычные Docker команды:

docker ....
// or
docker-compose up -d

Kebernetis

Для работы с Kubernetes нам необходим kubectl, давайте его установим

brew install kubectl

Чтобы активировать Kubernetes, запустите Colima с флагом --kubernetes.

colima start --kubernetes

Подробнее можно прочитать в доке или в статье.

Другие полезные команды

Указывая при запуске VM флаги --cpu и --memory, вы можете гранулярно увеличить выделяемые ресурсы для создаваемой VM

Если вы хотите изменить конфигурацию VM, то сначала необходимо удалить предыдущую VM, и создать новую, и после этого запускать докер контейнеры. Иначе возникнут проблемы с зависанием контейнеров при создании и придется вручную убивать все процессы Colima и Lima VM.

colima start --arch aarch64 --vm-type=vz --vz-rosetta --cpu=8 --memory=12

Остановка VM

colima stop
colima stop -f  // in case you are not able to use 

Удалить VM. Его стоит использовать при изменении конфигурации VM.

colima delete <name>

Получить список VMs и их характеристики.

colima list

Colima конфиг

Конфиг созданных VMs Colima вы можете найти по пути ~/.colima/<VM-Name>/colima.yaml , там вы можете прочитать про возможные конфигуации VMs и ограничения.

Для того чтобы любая VM создавалась с предустановленными настройками, вы можете создать файл /Users/<Username>/.lima/_config/override.yaml и прописать туда необходимые значения.

Возможные проблемы

При использовании Docker-compose:

  1. Не стартуют контейнеры, зависают при создании, после перезагрузки ОС.
    Есть следующие опции:
    • Попробуйте выполнить colima stop если не помогает colima stop -f.
      Запустите VM заново и попробуйте запустить проект.
    • Если вышеприведенное не помогло удалите colima VM — colima delete <vm> .
      Создайте VM заново и придется пулить и билдить проект заново.
    • Удалите VM и попробуйте поменять тип файловой системы (смотри пункт 1).
  2. Ошибка Error response from daemon: Conflict. The container name "/wodby_nginx" is already in use.
Error response from daemon: Conflict. The container name "/wodby_nginx" is already in use by container "a0c8338054a084a348557bef7f4725d2883d13abdb". You have to remove (or rename) that container to be able to reuse that name.

// Чтобы исправить это - просто удалите контейнер

$> docker container rm a0c8338054a084a348557bef7f4725d2883d13abdb
  1. Не монтируются файлы или директории, проблемы с chmod, chown.
    • Решение: https://github.com/abiosoft/colima/issues/83#issuecomment-1339269542

Заключение

Colima как альтернатива Docker Desktop для MacOS в контексте экономии ресурсов и оптимизации бюджета, может привести к значительному сокращению расходов, особенно для крупных компаний с тысячами разработчиков.

Таким образом, Colima не только обеспечивает необходимые инструменты для работы с Docker и Kubernetes на MacOS, но и предоставляет компаниям уникальную возможность существенно сократить свои расходы, высвободив таким образом значительные финансовые ресурсы для более стратегически важных задач.

Если взять в расчет потенциальные траты в размере 288 000 долларов в год на лицензии Docker Desktop для команды из 1000 человек, становится очевидным, что переход на бесплатный инструмент, такой как Colima, может сэкономить компании миллионы долларов в течение нескольких лет.

Эти сэкономленные средства можно было бы использовать для других критически важных аспектов бизнеса, таких как развитие продуктов, маркетинг, улучшение условий труда или повышение зарплат сотрудников, что в конечном итоге могло бы способствовать росту и укреплению позиций компании на рынке.

Другие альтернативы Docker Desktop

  • Rancher Desktop — Управление контейнерами и Kubernetes. Имеется GUI.
    Настольное приложение с открытым исходным кодом для Mac, Windows и Linux. Rancher Desktop запускает Kubernetes и управление контейнерами на рабочем столе. Вы можете выбрать версию Kubernetes, которую хотите запустить. Вы можете создавать, перемещать, извлекать и запускать образы контейнеров с помощью containerd или Moby (dockerd). Созданные образы контейнеров могут быть запущены Kubernetes немедленно, без необходимости создания реестра.
  • Podman — бесплатный и open source инструмент для работы с контейнерами. Имеется GUI.
    Управление контейнерами, pods и образами с помощью Podman. Бесшовная работа с контейнерами и Kubernetes из локальной среды.
  • Minikube — open source инструмент, создает локальный кластер Kubernetes на macOS, Linux и Windows. Основные цели minikube — стать лучшим инструментом для локальной разработки приложений Kubernetes и поддерживать все функции Kubernetes, которые подходят для этого. Только CLI версия.

Полезные ссылки

  • Colima GitHub
  • Про использование Rosetta на Mac WikiPedia
  • Lima GitHub
  • Про Apple Framework virtualization
  • Про типы VM Lima
  • Быстрое создание среды разработки Kubernetes с помощью Colima

Источник: WP-Yoda.com

Андрей Писаревский

Андрей Писаревский — Backend Team Lead в EPAM. Имею коммерческий опыт в программировании с 2010 года и экспертизу в полном цикле веб разработки: frontend, backend, QA, а так же server administration. Использую в работе: PHP, WordPress, Slim Framework, Linux, Docker, Agile.

%d такие блоггеры, как: