2015-10-28 3 views
-1

После прочтения https://docs.docker.com/introduction/understanding-docker/ Мне все еще трудно понять легкий вес контейнеров докера.Docker understanding ИЗ ИЗОБРАЖЕНИЯ

В нескольких популярных изображениях, большинство из них основаны на одном из следующих «базовых» изображений, таких как FROM debian:jessie или FROM debian:wheezy. Существуют также варианты для ubuntu, я думаю, и fedora и centos (есть также «царапина», которая является другой темой).

Итак, учитывая это, я понимаю, что каждый контейнер докеров запускает базовую ОС (указанную на изображении), так как это работает? Откуда взялся легкий вес? Можете ли вы запустить изображение, основанное, скажем, debian:jessie на fedora, и изображение на основе centos на debian?

Как насчет «царапин»? Если вы основываете свой файл Docker на «scratch», тогда у вас нет операционной системы внутри контейнера, так как это работает тогда в этом случае?

Какова связь между ядром Linux хост-системы и контейнером докеров, запущенным на этой хост-системе?

+0

"Runs"? Это очень загруженный термин. Если вы не проходите через систему init, вы на самом деле не запускаете ** всю ОС ... –

+0

... альтернативно, можно утверждать, что, поскольку все изображения докеров используют ваше собственное ядро, re ** никогда ** не работает какая-либо ОС, кроме вашей локальной. :) –

+0

BTW, сборник связанных вопросов не является хорошим вопросом для StackOverflow. Как вы (и как кто-либо еще) должен судить, какой ответ лучше/наиболее каноничен, когда некоторые ответы будут отвечать на некоторые ваши вопросы лучше других? Такая ситуация является частью того, почему существует «слишком широкая» близкая причина. –

ответ

0

Где находится легкий вес?

Если выбранный бэкэнд разрешен, изображение хранится как дельта от его основания, поэтому, если у вас несколько контейнеров с использованием одного и того же базового изображения, это базовое изображение копируется только на диск. Более того, каждое изображение повторно использует ядро ​​вашего хоста и не требует аппаратной виртуализации.


Таким образом, учитывая это, я понимаю, что каждый докер контейнер запускает базовую ОС (упомянутую в изображении), так как он работает?

«Выполняет X os» действительно слишком расплывчато, чтобы быть полезным описанием; то, что вы намереваетесь означать слово «бег», само по себе, неясно. Каждое приложение, запущенное в среде Docker, использует ядро ​​хоста, содержащее содержимое файловой системы (таким образом, разделяемые библиотеки, конфигурацию и т. Д.), Предоставляемые контейнером.


Вы можете запустить изображение на основе, скажем, Debian: Jessie на фетровой шляпе, и изображения на основе CentOS на Debian?

Да. Любая функциональность, зависящая от ядра конкретной операционной системы, будет недоступна.


Что отношения между Linux ядром системы хоста и контейнером Docker работают на этом хост-системе?

Ядро хост-системы является единственным используемым; период.


насчет "чистого листа"? Если вы основываете свой файл Docker на «scratch», тогда у вас нет операционной системы внутри контейнера, так как это работает тогда в этом случае?

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

+0

Привет, @ charles-duffy, но как насчет состояний в статье выше «Контейнер состоит из операционной системы, добавленных пользователем файлов и метаданных». И какова цель изображений ОС, таких как debian, ubuntu, fedora и т. Д., Доступных на докере-хабе? Если они собираются повторно использовать ядро ​​хоста и ресурсы? Что делает изображение Fedora, работающее на debian, вести себя как fedora, почему кому-то нужны эти изображения вообще? Если понятно, что я имею в виду. – akazlou

+0

«Операционная система» - необычно неопределенный термин. Независимо от того, считается ли операционная система полной, когда она используется с другим ядром ОС, открыта для разумной интерпретации. –

+0

@zshamrock, ... и что вы подразумеваете под «ресурсами»? Libc - из образа; файлы конфигурации и рамки из образа. Этого достаточно, чтобы (для большинства целей) вести себя скорее как этот образ, чем ОС хоста, несмотря на то, что ядром называется хост. –

Смежные вопросы