Какова взаимосвязь между ОС хост-докера и операционной системой OS контейнера?

Я не уверен, что задаю правильный вопрос... но пока я читал все докеры, что я могу получить мои руки, я вижу, что я могу установить Docker на Ubuntu 12.04 (например), а затем Я могу установить контейнер Fedora или другую версию ubuntu? (есть пример, когда пользователь установил busybox в контейнер.)

И, конечно, я мог быть совершенно не прав.

Но я ожидал, что между базовой системой и контейнером возникнет эфемерная связь.

пересчитано: какова связь между ОС хоста и ОС ОС на основе контейнера?

Ответы

Ответ 1

Как упоминалось BraveNewCurrency, единственная связь между ОС хоста и контейнером - это ядро.

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

Вот почему вы можете запускать только дистрибутив/двоичные файлы на основе Linux в контейнере. Если вы хотите запустить что-то еще, это не невозможно, но вам потребуется какая-то виртуализация в контейнере (qemu, kvm и т.д.).

Docker управляет изображениями, представляющими представление файловой системы. Вы можете установить любой дистрибутив Linux или просто поместить двоичные файлы.

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

Еще один момент в отношении дистрибутивов: поскольку ядро ​​по-прежнему является ядром хоста, у вас не будет никакого конкретного модуля/патчей ядра, предоставленного дистрибутивом.

Ответ 2

Буквально единственное, что у них есть, это ядро. Весь их мир (файловая система) находится в контейнере докера.