Який взаємозв'язок між хостом ОС докера та базовою ОС контейнера?


122

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

І я, звичайно, можу бути абсолютно невірним.

Але я би сподівався, що між базовою системою та контейнером був ефемерний зв’язок.

переглянуто: яка взаємозв'язок між хост-ОС та ОС базового образу контейнера?

Відповіді:


100

Як згадував BraveNewCurrency, єдиний зв'язок між хост-ОС і контейнером - це ядро.

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

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

Докер управляє зображеннями, що представляють файлову систему. Ви можете встановити будь-який дистрибутив Linux або просто поставити бінарні файли.

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

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


2
Отже, якщо головна ОС - Ubuntu, контейнер теж буде Ubuntu?
Річард

21
Ядро контейнера буде таким від ubuntu, але більше нічого. Ви можете легко запускати centos, archlinux, debian або будь-який інший дистрибутив на базі Linux як контейнери.
скрип

37
Хоча ця інформація може бути вказана прямо / опосередковано на веб-сайті докера, я дійсно вважаю, що вони повинні зробити це трохи зрозумілішим. Я пропрацював домашню сторінку, огляд, інтерактивний підручник та більшість основних посібників. Незважаючи на це, я був розгублений у цій темі, і я починав припускати, що для найкращої роботи докера (на основі діаграм архітектури з сайту) потрібна відповідність на хості та контейнерах ОС. Я новачок у понятті "Linux Linux kernel", тому це було не відразу для мене очевидним. Усвідомлення цього моментально робить докера вдвічі меншим, ніж поганий.
ctrlplusb

2
Docker - це досить складний проект, який використовує попередні функції. У якийсь момент ми припускаємо, що користувач має деякі знання, як різниця між операційною системою та дистрибутивом. Якщо ви думаєте, що це додасть цінності, документація є відкритим кодом, і ви можете надіслати запит на тягу.
скрип

3
Це, мабуть, вказує на те, що контейнери можуть містити лише частини простору користувача в ОС (бібліотеки, команди, програми). Якщо програма потребує іншої редакції ядра (наприклад, 3.10 проти 4.9), вона може не мати можливості працювати в контейнері. Це так?
Девід К.

23

Буквально єдине, що у них є спільне - це ядро. Весь їхній світ (файлова система) знаходиться в контейнері докера.


1

Є ще один розгляд - навіть якщо обидва ядра однакові, виникає проблема, якщо хост ОС не підтримує Docker, як RHEL 6: https://access.redhat.com/solutions/1378023

Таким чином, ви не зможете відкрутити контейнер на RHEL 6, навіть якщо зображення є Linux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.