Подтвердить что ты не робот

Является ли докер решением для приложения кросс-платформы?

Я начинаю работу с докеров, читая некоторые блоги и материалы для ознакомления.

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

Если мое понимание верное, значит, это означает, что Microsoft может обернуть свои офисные костюмы в контейнер, и я могу установить и запустить его на Mac OS или Linux? И еще какое-нибудь другое приложение для Mac может быть отправлено в Windows и Linux?

4b9b3361

Ответ 1

Docker - это удобный для пользователя уровень поверх LXC, набор функций ядра Linux, позволяющий пространство имен конфигурации файловой системы, сетевых ресурсов, таблиц процессов и других ресурсов, связанных с ядром, которые были исторически глобальными. (Это намного ближе к тюрьмам FreeBSD, чем к kvm или VMware).

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

Таким образом, Docker представляет собой не уровень переносимости кросс-OS (или кросс-архитектуры), и он не сможет скрыть детали реализации из приложений, зависящих от конкретных версий ядра, а тем более совершенно разных операционных систем в целом.


Обновление до 2017 года

Docker теперь работает на Mac, объединяя легкий стек виртуализации, очень похожий на kvm на Linux. При выполнении этого способа он фактически выполняет как виртуализацию, так и контейнеризацию - первый для запуска (одного) ядра Linux, последний для запуска серии отдельных контейнеров в этом ядре.

Это все равно означает, что он ограничивается запуском собственных приложений для Linux, и он по-прежнему не обеспечивает уровень отображения для настольных приложений (X11, VNC или что-то еще по этим строкам необходимо использовать дополнительно). Однако, объединив инструмент виртуализации, современный Docker теперь является чем-то вроде портативного решения (на разных платформах, а не на архитектуре).