Лучшие альтернативы Docker Desktop в 2022 году: как выбрать

Лучшие альтернативы Docker Desktop в 2022 году: как выбрать

12 марта 2022 г.

Платформа Docker полностью посвящена контейнерам приложений и контейнеризации. Если вы новичок в «контейнеризации», это способ упаковки программного приложения и всех его зависимостей в один образ. Контейнеры позволяют пользователям отделить приложение от его инфраструктуры, поэтому приложение работает предопределенным образом независимо от среды.


Хотя существуют и другие типы программного обеспечения для контейнеризации, ожидается, что к концу 2022 года продукты и услуги Docker кардинально изменятся. Как, спросите вы? Не так давно Docker был бесплатной платформой с открытым исходным кодом, которую предпочитали разработчики. Но начиная с с 31 января 2022 новая политика подписки Docker Desktop требует лицензирования для коммерческого пользователя. Так в чем путаница?


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


Docker и экосистема контейнеров


Согласно [IBM] (https://www.ibm.com/cloud/learn/containers), контейнер — это отдельная единица программного обеспечения, в которой хранится код приложения, его библиотеки и зависимости.


Существует распространенное заблуждение, что Docker предназначен только для контейнеров. Ну, это неправда, и Docker — это только часть контейнерной экосистемы, состоящей из больших разных проектов. Их объединяет требование соответствия стандартам Open Container Initiative (OCI) и Kubernetes Container Runtime Interface (CRI).


Для чего используются контейнеры?


Контейнеры в основном используются в следующих сценариях:


  • В многооблачных средах:

при использовании нескольких облачных сервисов от разных поставщиков


когда приложение работает с разными публичными облаками


  • В процессе миграции в облако для модернизации устаревшего программного обеспечения.

  • В микросервисной архитектуре. Когда приложения разбиты на более мелкие и независимые службы, контейнеры необходимы для развертывания и обслуживания служб поставщика.

При использовании упомянутыми выше способами контейнеры решают следующие проблемы:


  • Настройка среды для разработки нового программного обеспечения.

  • Создание и компиляция программных приложений.

  • Запуск и тестирование приложения в различных средах.

  • Развертывание приложения на облачной платформе, такой как Kubernetes или AWS.

  • Запуск стороннего ПО.


Что такое Докер?


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


==Обзор архитектуры Docker==




Docker была первой компанией, которая упаковала расширенные функции ядра Linux. Это ускорило разработку и развертывание. Вместо создания всего сервера с нуля для запуска приложения-службы вы можете запустить образ контейнера Docker на хосте и запустить приложение, используя несколько ресурсов хоста в нескольких средах.


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


Инструменты Докера


Контейнеризация — относительно новая концепция в разработке программного обеспечения, и мы покажем вам, как она работает на примере Docker.


Docker Engine


В основе экосистемы Docker лежит Docker Engine, представляющий собой контейнер среду выполнения. Среда выполнения контейнера — это программный инструмент для загрузки образов контейнеров, мониторинга, изоляции системных ресурсов и управления жизненным циклом контейнера. Он позволяет создавать и запускать контейнеры на любом компьютере для разработки, а затем сохранять или загружать образы контейнеров через реестр контейнеров, например Docker Hub или Azure Container Registry.


Докер Хаб


Docker Hub — это служба, предоставляемая Docker для поиска образов контейнеров и обмена ими.


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


Kubernetes в Docker


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


Kubernetes, также известный как K8s. Он был разработан Google для управления, автоматизации и масштабирования контейнерных приложений. По сути, Docker и Kubernetes часто используются вместе в проектах. Docker упрощает процесс создания контейнеров, а Kubernetes берет на себя управление контейнерами. Это считается основным отличием Kubernetes от Docker.




Docker Проблемы и возможные Решения


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


Однако у использования инструментов Docker все еще есть обратная сторона. Ниже приведены некоторые из наиболее распространенных причин, по которым разработчики ищут альтернативы контейнерам Docker:


Проблемы с безопасностью


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


Решение. Используйте альтернативы следующего поколения, которые изначально нацелены на повышение безопасности и простоты использования. Хорошим примером является Podman, отличная альтернатива контейнеру Docker с открытым исходным кодом без демона.


Проблемы с оркестровкой


Docker не может управлять порядком запуска контейнера. Хотя у него есть инструмент оркестровки под названием Docker Swarm, его функциональность ограничена по сравнению с мощными оркестраторами, такими как Kubernetes. Кроме того, Docker Swarm работает только с контейнерами Docker.


Решение. Используйте альтернативы Docker, такие как Kubernetes, для оркестровки контейнеров. Kubernetes поддерживает несколько типов контейнеров: Docker, контейнеры, CRI-O и любое решение, соответствующее стандарту CRI.


Проблемы с изоляцией


Docker не обеспечивает 100% изоляцию ресурсов между контейнерами. И в репозитории изображений может быть беспорядок, поскольку все пользователи имеют право что-то изменить.


Решение. Используйте альтернативы нового поколения, обеспечивающие большую безопасность и простоту использования. В отличие от Docker, Podman хранит образы и контейнеры в разных каталогах. Репозиторий Podman находится в домашнем каталоге пользователя. У каждого пользователя есть свой, отдельный набор контейнеров, чтобы несколько пользователей могли работать на хосте одновременно.


Проблемы с надежностью


Служба демона Docker отвечает за всю работу с реестрами, образами, контейнерами и ядром. Но одна услуга означает повышенный риск сбоя. Когда процесс-демон дает сбой, все работающие контейнеры остаются сами по себе.


Решение. Используйте инструменты контейнеризации без демона, например Podman.


Проблемы с брандмауэром


Docker вмешивается в системный брандмауэр, добавляя в систему свои собственные правила брандмауэра. Нет надежного способа управлять сетевым доступом к контейнеру через брандмауэр. Кроме того, возникает проблема при объединении Docker с другими сервисами, пытающимися управлять брандмауэром, например, с VPN-клиент-сервером.


Решение. Отказать сервису демона Docker в разрешении на внесение изменений в системный брандмауэр. Вместо этого создайте все необходимые правила вручную.


Проблемы Docker Hub


Реестр Docker Hub содержит как официальные, так и неофициальные образы. Большинство неофициальных образов плохо собраны и имеют уязвимости. Авторы таких изображений обычно не предоставляют никаких гарантий качества или поддержки.


Решение. По возможности создавайте любой образ, используемый в проекте, самостоятельно и добавляйте его в собственный реестр образов Docker. Никогда не запускайте случайно выбранные образы в вашей системе.


Проблемы с установкой


Существует несколько способов установки Docker. Но некоторые функции могут перестать работать или работать неожиданно при выборочной установке.


Решение. Всегда устанавливайте инструменты Docker в соответствии с инструкциями с официального сайта Docker.


Со всеми этими нерешенными проблемами неудивительно, что компании и команды разработчиков всегда ищут другие альтернативы контейнерам Docker. Кроме того, эти проблемы усугубились последним заявлением команды Docker — Docker Desktop — когда было объявлено, что часть экосистемы Docker больше не является бесплатной для всех.


Docker Desktop и что изменилось


Docker Desktop недавно привлек внимание сообщества контейнерщиков после новых изменений в политике подписки.


Docker Desktop (DD) — это универсальное приложение для сред Mac или Windows, которое позволяет создавать и совместно использовать контейнерные приложения и микросервисы. Docker Desktop включает в себя Docker Engine, клиент Docker CLI (интерфейс командной строки), Docker Compose, Kubernetes и многие другие.


Docker Desktop на Mac и Windows — это способ запустить Linux (создать виртуальную машину Linux), чтобы Docker Engine мог работать.




Что изменилось в политике лицензирования Docker?


Компания Docker недавно объявила, что будет вносить изменения в условия подписки на Docker Desktop. Docker Desktop — единственное решение Docker, не имеющее пока полной альтернативы. О новых изменениях было объявлено 31 августа 2021 г. с льготным периодом до 31 января 2022 г. В течение этого периода Docker Desktop пользователям необходимо выбрать план подписки, если они хотят продолжать использовать лицензию Docker Desktop. В противном случае им придется переключиться на другие альтернативы Docker Desktop.


Чиновники заявили, что эти изменения жизненно важны для улучшения их продукта и расширения бизнеса. Теперь, когда Docker Desktop [достигает 3,3 миллиона установок] (https://www.docker.com/blog/docker-index-shows-continued-massive-developer-adoption-and-activity-to-build-and-share- apps-with-docker/), компания стала на один большой шаг ближе к своей цели.



Новая политика подписки


Возвращаясь к нашей теме, бесплатным является только план подписки Personal — он доступен для малых предприятий, индивидуального использования и некоммерческих проектов с открытым исходным кодом. Если в компании работает более 250 сотрудников или ее выручка превышает 10 миллионов долларов, ей придется использовать одну из платных подписок: Pro, Team или Business. Проще говоря, крупные бизнес-пользователи должны получить корпоративную лицензию Docker Desktop, чтобы получить дополнительные функции — безопасное управление цепочками поставок программного обеспечения, централизованную видимость политик и элементы управления. Небольшие предприятия будут пользоваться Docker Desktop бесплатно.


Примечание. Если вам не нужен Docker Desktop, значит, для вашего бизнеса ничего не изменилось.


Если вам не нужен Docker Desktop, то для вашего бизнеса ничего не изменилось — вы по-прежнему можете выбрать любой инструмент (Docker, Podman, CRI-O и т. д.) для создания и оркестрации контейнеров.


Большинство дополнительных функций, предоставляемых Docker Desktop платными планами, связаны с использованием реестра образов Docker Hub. Например, возможность сканировать образы из Docker Hub на наличие уязвимостей. Но обычно компании используют реестры, предоставляемые поставщиками облачных услуг.


Когда вам действительно нужен Docker Desktop?


Docker Desktop предназначен для тех, кто хочет упростить процесс установки, но не хочет использовать командную строку. Docker Desktop упрощает настройку и интеграцию Docker с WSL (подсистемой Windows для Linux).


Говоря о Linux, Docker Desktop может быть не полностью доступен для пользователей Linux. Дело в том, что DD поддерживается только на Mac и Windows. Но чтобы использовать Docker в операционных системах, отличных от Linux, разработчикам нужна виртуальная машина, и это то, что делает Docker Desktop. Все остальное (Docker CLI, Docker Engine и другие инструменты Docker) остается бесплатным и с открытым исходным кодом в соответствии с [лицензией Apache v.2] (https://www.apache.org/licenses/LICENSE-2.0).


Докер для рабочего стола Альтернативы


При использовании Docker Desktop вы, вероятно, обнаружите проблемы с Docker, упомянутые выше. Некоторые из этих проблем были частично решены в платных подписках. Например, Бизнес-план обеспечивает централизованное управление, повышенную безопасность и единый вход SAML в ближайшем будущем. А вот другие (вместе с новой попользовательской помесячной тарификации) ДД могут заставить вас искать альтернативные решения.


Докер для рабочего стола и Kubernetes


Большинство альтернатив DD ориентированы на создание и отправку образов и наличие локальных сред Kubernetes. В подобных случаях вы будете использовать Docker только для создания и отправки образов контейнеров в локальные среды. Это можно сделать с помощью Docker Desktop, через API Kube и с помощью Minikube в качестве виртуальной машины Linux.


В других случаях, когда Kubernetes не требуется (например, запуск контейнеров напрямую с помощью Docker Compose), другой альтернативы Docker Desktop нет.**


Вы можете заменить Docker Desktop одним из следующих вариантов:


1. Запустите виртуальную машину и управляйте ею самостоятельно. Docker CLI и Docker Engine по-прежнему бесплатны. Установите виртуальную машину Linux на хост Windows (например, через Hyper-V или VirtualBox), а затем установите интерфейс командной строки Docker внутри WSL и подключитесь через SSH. В целях разработки (создание и запуск образов) используйте Podman.


2. Используйте Minikube для установки виртуальной машины и управления ею, а также для запуска кластера Kubernetes из Windows. Но обратите внимание, что Minikube не имеет GUI (графического пользовательского интерфейса) и не работает с чипами M1, поэтому может не работать на новых MacBook.


3. Используйте RancherDesktop, бесплатное приложение с открытым исходным кодом для Mac, Windows и Linux. Он упрощает создание, отправку, извлечение и запуск образов контейнеров, а также включает Kubernetes. Он прост в использовании и имеет встроенный графический интерфейс. Но поскольку этот инструмент относительно новый, вы рискуете упустить интерфейс командной строки и множество других функций. В нем тоже могут быть баги.



Последние мысли**


В экосистеме контейнеров нет «контейнеров Docker», есть просто «контейнеры» и нет «образов Docker», есть только «образы контейнеров». Вы можете использовать любые контейнеры, альтернативные Docker, если они соответствуют отраслевым стандартам в отношении форматов контейнеров и сред выполнения.


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


Единственный продукт Docker, у которого нет полноценной альтернативы, — это Docker Desktop для Mac и Windows. Но это только вопрос времени, когда другие компании запустят продукты, которые смогут заменить DD. А пока попробуйте проанализировать, представляет ли Docker Desktop дополнительную ценность для вашего бизнеса или нет. Если вы не используете какие-либо функции Docker Desktop помимо того, что предлагает сам Docker, стоит рассмотреть другие варианты. Но если есть существенная дополнительная ценность, стоит заплатить за стандартную функциональность.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE