Moby Project - Что на самом деле представляет собой кит Докера в комнате

Опубликовано: 17 Апреля, 2023
Moby Project - Что на самом деле представляет собой кит Докера в комнате

Немногие объявления были встречены с таким же замешательством и критикой, как недавнее объявление Docker о проекте Moby, несмотря на то, что различные представители Docker делали все возможное, чтобы убедить всех, что ничего не изменилось. Что еще больше запутало ситуацию, так это то, что решение Moby последовало за разделением EE и CE, в то время как пользователи все еще привыкали к идее отдельных выпусков Enterprise и Community. Однако мотив Moby Project на самом деле не так уж сбивает с толку и, по словам основателя Docker Соломона Хайкса, заключается в том, чтобы иметь возможность создать структуру для сборки специализированных контейнерных систем, не «изобретая велосипед». Акцент здесь делается на «изобретении велосипеда» и на умной работе, а не на упорной работе или повторении того, что уже было сделано.

Docker или Moby Project: что в имени?

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

Теперь, когда одни люди называют его движком, другие называют его платформой, а третьи называют Docker инструментом. Согласно официальному сайту, Docker — это платформа с двумя основными компонентами: Docker Engine и Docker Hub. Остальная часть платформы состоит из огромной экосистемы взаимозаменяемых инструментов и приложений. Docker Hub — это репозиторий образов Docker с открытым исходным кодом, точно так же, как GitHub — репозиторий исходного кода. Также существует платная корпоративная версия Docker Hub. Docker Engine — это то, что мы собираемся рассмотреть более подробно. Этот «движок» состоит из демона для прослушивания запросов API и управления объектами Docker, REST API для управления демоном и клиента CLI для управления API. Теперь, хотя многие люди называют весь движок Docker, другие называют клиент Docker, а третьи называют Docker реестр. Да, это сбивает с толку.

Итак, чтобы уточнить, клиент Docker или CLI — это то, что большинство пользователей используют для связи с API для отправки команд демону. Это, в свою очередь, использует инструмент CLI (например, runC) для связи с ядром. Большинство людей, которые называют Docker «инструментом», имеют в виду клиент или интерфейс командной строки, который на самом деле является инструментом, но если вы действительно хотите получить техническую информацию, все они представляют собой инструменты, построенные вокруг базовой функции Linux, называемой контейнерами. На самом деле, если у вас есть техническое ноу-хау, вы можете делать все, что делает Docker, просто из интерфейса командной строки Linux, а все эти интерфейсы командной строки и API — не что иное, как переводчики для людей, которые не говорят на ядре Linux.

DevOps через взрыв

Теперь давайте снова вернемся к тому времени, когда dotCloud выпустил проект с открытым исходным кодом под названием Docker. Около 10 000 разработчиков попробовали его в течение первого месяца, а такие компании, как AWS и RedHat, предложили коммерческую поддержку в течение первого года. В течение 15 месяцев у них было 8 741 фиксация от 460 участников, 2,75 миллиона загрузок, более 14 000 «докеризированных» приложений и отзывы десятков тысяч пользователей. Идеология DevOps идет рука об руку с моделью открытого исходного кода, и эта идеология заключается в том, чтобы иметь возможность работать над тем, в чем вы лучше всего разбираетесь, в то время как рутинные вещи автоматизируются. Что может быть лучше для автоматизации, чем разбить ваше решение на ключевые компоненты с открытым исходным кодом и передать их сообществу?

Изображение 14579
НАСА

Это очень похоже на то, как ракета НАСА сбрасывает свои ускорители, как только выходит из гравитационного поля Земли. В список удаленных бустеров входят libnetwork, notary, runC, Hyperkit, VPNKit, Datakait, Swarmkit, Infrakit, LinuxKit и самое последнее пожертвование CNCF, Containerd. Один вопрос, который приходит на ум, заключается в том, что если исходный код изначально был с открытым исходным кодом, какая разница в том, чтобы сломать его и пожертвовать? Разница в том, что хотя все это было с открытым исходным кодом, каждый выпуск по-прежнему управлялся Docker, в то время как у них, вероятно, была сотня разных вещей, над которыми они предпочли бы поработать. Разбив его на части и пожертвовав основные компоненты, они полностью освобождают себя от необходимости снова просматривать эти фрагменты кода.

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

Об автомобилях и изобретенных колесах

Однако с разбивкой и передачей каждого компонента сообществу самому Docker стало сложно объединить все эти технологии с открытым исходным кодом для создания специализированных систем. Во многом это было связано с тем, что все эти разные команды одновременно использовали разные компоненты своих проектов для создания разных специализированных систем. Происходило следующее: в то время как один компонент модифицировался для одной специализированной системы, тот же самый компонент должен был быть «не модифицирован» или полностью перестроен для другой специализированной системы. Это было похоже на наличие одного мастер-файла, который каждый редактировал в соответствии со своими спецификациями и сохранял изменения в одно и то же время. Это привело к большому дублированию усилий и напоминает нам, почему Соломон Хайкс назвал ситуацию изобретением велосипеда.

Изображение 14580
Land Rover

Вдохновение для решения этой проблемы пришло из автомобильного мира, и Соломон Хайкс взял страницу из книги General Motors, когда решил иметь одно большое пустое «шасси». Это шасси было бы совершенно скучным, не имело бы никакой настройки и использовалось бы для создания спортивных автомобилей, седанов, хэтчбеков, семейных универсалов или внедорожников 4×4, если бы автомобили были контейнерными системами. Это большое пустое контейнерное шасси получило прозвище Moby Project и состоит из всего кода с открытым исходным кодом, который используется в Docker, без каких-либо проприетарных корпоративных материалов, которые Docker строит на нем. Это решило проблему создания каждой специализированной контейнерной системы для каждого клиента с нуля.

Кит в комнате

В связи с растущим спросом пользователей и взрывным ростом компонентов и участников экосистемы компания Docker решила сделать это «контейнерное шасси», которое они уже использовали для решения собственных задач, доступным для всех, переместив все соответствующие файлы в репозиторий GitHub под названием Moby Project. Этот шаг дает всем, кто хочет создать специализированную контейнерную систему, отличную платформу для этого, не мешая при этом другим запущенным проектам, таким как Docker CE или EE, которые теперь основаны на Moby Project. Таким образом, хотя перенаправление посетителей Docker на GitHub вызвало некоторую путаницу, по своей сути проект Moby — это все, что вам нужно для создания специализированной системы контейнеров без дублирования предыдущих усилий.

Быть в центре внимания — не всегда лучшее решение для софтверной компании, которой чуть больше года. Когда Docker представил Swarm, реакция сообщества показала, что проект с открытым исходным кодом под названием Docker перерос своих создателей. Что вы делаете, когда то, что вы построили, больше не может контролироваться? Вы переименовываете его в честь кита, освобождаете, как Вилли, и делаете из него чью-то чужую проблему. Это привело к двум вещам: они сохранили имя Docker на платформе, которую продолжают строить и улучшать, оставаясь при этом в стороне от внимания и избегая критики со стороны всего сообщества. Однако у капитана Ахава (Kubernetes) могут быть другие планы, связанные с гарпунами в форме ркт, которые подходят к гнездам CRI.