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

Что подразумевается под общим ядром в Docker?

В Docker гостевая ОС имеет то же самое ядро, что и Host OS.

Может ли кто-то более подробно описать это.

Пусть у меня есть centos os, у которых есть некоторая версия ядра, когда мы тянем изображение ubuntu, тогда у него есть другое ядро, тогда как мы можем сказать, что у них есть одно и то же ядро?

4b9b3361

Ответ 1

когда мы тянем образ Ubuntu, то у него другое ядро

Нет, это не так: у него нет части ядра: оно опирается на ядро хоста (одно запущенное средство докера) для всех системных вызовов.

Как упоминалось в " Docker vs Virtualization ":

Изначально Docker создавался как уровень абстракции поверх контейнеров Linux (LXC). Сам LXC - это просто API для функций локализации Linux.
Начиная с Docker 0.9, LXC больше не используется по умолчанию и был заменен пользовательской библиотекой (libcontainer), написанной на Go. Общее преимущество libcontainers - более согласованный интерфейс с ядром в различных дистрибутивах Linux. Единственное, что нужно, это то, что он требует Linux 3.8 и выше.

См. Больше в разделе " Почему понимание пространства пользователя и вопросов пространства ядра ".
Также " Контейнеры операционной системы и контейнеры приложений ":

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

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-virtualization.jpg

Контейнеры ОС - это виртуальные среды, которые совместно используют ядро операционной системы хоста, но обеспечивают изоляцию пространства пользователя

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-containers.jpg

Как упомянуто в "Все ли дистрибутивы Linux используют одно и то же ядро? ", Ядро может быть общим для всех дистрибутивов, даже если каждый дистрибутив имеет свою собственную конфигурацию ядра.


Если вам нужна дополнительная изоляция, рассмотрите gVisor (https://github.com/google/gvisor), среду выполнения песочницы контейнера, сфокусированную на безопасности, эффективности и простоте использования. (2018).
Смотрите Архитектура:

https://gvisor.dev/docs/architecture_guide/Layers.png

gVisor перехватывает системные вызовы приложения и действует как гостевое ядро без необходимости трансляции через виртуализированное оборудование.

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

Ответ 2

Докер ранее использовал LinuX Containers (LXC), но переключился на runC (ранее известный как libcontainer), который работает в той же операционной системе, что и его хост. Это позволяет ему совместно использовать множество ресурсов операционной системы хоста. Он также использует многоуровневые файловые системы, такие как AuFS. Он также управляет сетью для вас.

AuFS - это многоуровневая файловая система, поэтому вы можете иметь только часть для чтения и часть записи и объединить их вместе. Таким образом, вы могли бы использовать общие части операционной системы только для чтения, которые распределяются между всеми вашими контейнерами, а затем предоставляют каждому контейнеру собственное монтирование для записи.

Итак, скажем, у вас есть изображение контейнера размером 1 ГБ. Если вы хотите использовать полную виртуальную машину, вам нужно будет иметь 1 ГБ x количество виртуальных машин, которые вы хотите. С LXC и AuFS вы можете разделить основную часть 1 ГБ, и если у вас 1000 контейнеров, у вас все еще может быть чуть более 1 ГБ пространства для ОС контейнеров, если они все работают с одинаковым изображением ОС.