Означает ли спецификация OCF, что Docker больше не ориентирован на Linux?
Когда я впервые услышал, что Microsoft работает над запуском контейнеров, это не имело смысла.
Некоторое время казалось, что Docker ориентирован на Linux и зависит от https://linuxcontainers.org/.
Теперь кажется, что Docker перешел с LXC на реализацию спецификации Open Containers Format (OCF) в runc.
Мой вопрос: означает ли спецификация OCF, что Docker больше не ориентирован на Linux? (то есть так ли это будет работать? Означает ли это, что теоретически существует возможность сделать это и в OSX?)
3 ответа
Здесь есть несколько интересных мест.
- Контейнеры могут поддерживаться только на платформах, поддерживающих виртуализацию ОС. OSX (пока) не имеет такой возможности. Так что он не может поддерживать контейнеры изначально. Вы должны использовать виртуальную машину.
- Стандартизированный формат контейнера не означает, что один и тот же контейнер сможет работать на разных платформах. Контейнер и хост обязательно должны работать на одном и том же ядре. Таким образом, конкретный контейнер может работать только на совместимой платформе.
- Спецификация стандартизированного формата контейнера состоит в том, чтобы обеспечить более богатую экосистемную технологию контейнера из различных источников, способную взаимодействовать благодаря стандартному формату контейнера. Эта технология все еще должна быть реализована для каждой отдельной хост-платформы.
- Принятие докером OCF не обязательно означает, что он автоматически начнет нацеливаться на платформы, отличные от Linux. Это просто означает, что формат контейнера, который он будет использовать в Linux, будет OCF, а не его собственным проприетарным форматом.
+1 к Ziffusion. Возможно, вы захотите перефразировать пункт 1), но в целом вы правы по всем четырем пунктам.
Чтобы ответить на вопрос ОП: я не верю, что OCF "осуждает" Linux. Наоборот, я считаю, что он лучше поддерживает Linux И, В то же самое время, открывает функциональность Docker для лучшей поддержки и других ОС.
В частности:
https://www.opencontainers.org/faq
В последние два года наблюдается быстрый рост интереса и использования контейнерных решений. Почти все крупные поставщики ИТ-услуг и облачные провайдеры объявили о решениях на основе контейнеров, и в этой области также появилось множество новых компаний. Хотя распространение идей в этом пространстве приветствуется, обещание контейнеров как источника переносимости приложений требует установления определенных стандартов в отношении формата и времени выполнения. Несмотря на то, что быстрый рост проекта Docker сделал формат изображения Docker де-факто стандартом для многих целей, существует широкий интерес к единой спецификации открытого контейнера, которая:
а) не привязан к конструкциям более высокого уровня, таким как конкретный клиент или стек оркестровки,
б) не тесно связаны с каким-либо конкретным коммерческим продавцом или проектом, и
c) переносимость между различными операционными системами, аппаратным обеспечением, архитектурой процессора, общедоступными облаками и т. д.
В FAQ также говорится:
Какие значения определяют спецификацию?
Наборный. Все инструменты для загрузки, установки и запуска контейнеров должны быть хорошо интегрированы, но независимы и компоноваться. Форматы контейнеров и время выполнения не должны быть привязаны к клиентам, к инфраструктурам более высокого уровня и т. Д.
Переносимость: стандарт времени выполнения должен использоваться на разных аппаратных, операционных системах и облачных средах.
Открыто. Формат и время выполнения должны быть четко определены и разработаны сообществом. Мы хотим, чтобы независимые реализации инструментов могли последовательно запускать один и тот же контейнер....
Open Container Initiative - это работа по созданию формата контейнера и среды выполнения, которая может работать на многих платформах, хотя многие концепции и требования будут основаны на основе Linux, из которой они были построены. Контейнер OCF по-прежнему указывает платформу, поэтому не ожидайте, что он сможет выполнить контейнер Windows на хосте Linux. Но ожидайте, что сможете управлять Linux, Windows и Y-контейнерами таким же образом и в экосистеме.
Некоторое время назад Docker перешел от LXC к использованию libcontainer, который по-прежнему ориентирован на Linux. runC - это следующая среда выполнения, которая уже может запускать текущие док-контейнеры в Linux, но нацелена на поддержку спецификации Open Container Format на многих платформах.
Цель runC - сделать стандартные контейнеры доступными везде
Очевидно, что в последние 10 лет Linux создавал функции ОС для поддержки контейнеров. Microsoft включила множество компонентов ОС в Windows 10 для естественного запуска контейнеров и предоставила поддержку за докером. Поэтому ожидайте, что runC скоро будет запущен в Windows.
BSD поддерживает большую часть функциональности через установку Jails, но никогда не развивалась так сильно, как пространство Linux, поэтому я полагаю, что для этого потребуется дополнительная поддержка OS, или OSX, чтобы иметь возможность запускать контейнер OCF изначально. Хотя последняя версия FreeBSD 11 позволяет вам запускать Docker через 64- битный уровень совместимости с Linux, поэтому я предполагаю, что runC будет близок к тому же, с некоторыми возможными потерями производительности.