2017-01-11 17 views
1

На самом деле я новичок в экосистеме Докера, и я пытаюсь понять, как именно контейнер работает на базовом изображении? Загружается ли базовое изображение в контейнер?Как работают докеры изображений и слоев?

Я прошел через Docker docs, где сказано, что слой чтения прочитанного контейнера формируется поверх слоя изображения, который является уровнем контейнера, но то, что я смущен, является неизменным, является ли изображение неизменным? Затем, где выполняется изображение, находится ли он внутри механизма Docker в виртуальной машине и как контейнер фактически вступает в игру?

+0

Зачем стоит отмечать "Azure"? – techraf

+0

Потому что я пытался развернуть его в Azure Container Services, так что, возможно, это будет отправной точкой в ​​обсуждении. –

ответ

3

Как именно контейнер работает на базовом изображении? Загружается ли базовое изображение в контейнер?

Docker контейнеры завернуть кусок программного обеспечения в полном filesystem, который содержит все необходимое для запуска: код, время выполнения, системные инструменты, системные библиотеки - все, что может быть установлен на сервере.

Как FreeBSD Jails и Solaris Zones, контейнеры Linux являются самодостаточными среды выполнения - с их собственной, изолированной процессор, память, блок ввода/вывода и сетевых ресурсов (Использование функции CGROUPS ядра) - которые разделяют ядро хост-операционная система. Результатом является то, что похоже на виртуальную машину, но проливает весь вес и накладные расходы на запуск гостевой операционной системы.

Это сказанное Каждый дистрибутив имеет собственный официальный docker изображения (library), который поставляется с минимальными бинарников, Рассмотренный docker «s лучшие практики и он готов строить дальше.

Я смущен - это изображение неизменное, правильно? где работает изображение, находится ли он внутри механизма Docker в виртуальной машине и как контейнер фактически вступает в игру?

Docker имел обыкновение использовать AUFS, до сих пор использует его на debian и использует AUFS как файловые системы, как overlay и т.д. на других дистрибутивах. AUFS обеспечивает расслоение. Каждое изображение состоит из слоев, эти слои доступны только для чтения. Каждый контейнер имеет слой чтения/записи поверх своих слоев изображения. Уровни только для чтения разделяются между контейнерами, поэтому у вас будет экономия пространства для хранения. Контейнер увидит union mount всех слоев изображения + слой чтения/записи.

enter image description here

+0

Спасибо за помощь, но то, что все еще беспокоит меня, я полагаю, что мне нужен сервер apache, поэтому я рисую изображение для этого, а затем изображение apache будет тянуть изображение debian, потому что это то, что предлагает его файл докеров, так что у нас есть работа экземпляр этого изображения, запущенного на ядре linux, когда мы хотим запустить контейнер apache? –

+0

Linux Kernel работает на «докере-хосте» и разделяется между контейнерами. Поэтому, когда вы рисуете образ 'apache', слои состоят из базы' debian' (Только двоичные файлы) + дополнительные двоичные файлы для пакета 'apache' в слое поверх' debian'. при создании контейнера из этого образа на основе команды «entrypoint» будет запущен процесс в вашем случае 'apache2'. Чтобы запустить этот процесс, вам нужны некоторые «базовые двоичные файлы», такие как 'systemd' и ... в debian-изображении и, конечно же,' apache2' -файлы в слое 'apache2' сверху. –

+0

Хорошо, так что изображение запускается в двигателе докеров в ядре VM OS, и, соответственно, контейнеры совместно используют изображение, основанное на распределении ресурсов и необходимости. Теперь, если более одного контейнера используют одно и то же изображение, это означает, что контейнеры располагаются друг над другом друг над другом или это означает, что контейнеры работают параллельно? –