Системы Linux содержат ядро Linux и набор программ / утилит, которые определяют общее поведение и внешний вид системы.Что делает Docker легковесным по сравнению с технологиями виртуализации, так это то, что он разделяет ядро с хост-ОС.Но не остальные программы.
Вероятно, вы не захотите развертывать свое приложение на чистом ядре - вам нужны POSIX api вместе с менеджером оболочки и пакетов.Все это поставляется с Ubuntu или любым другим дистрибутивом, который вы предпочитаете.Итак, в контейнере вашего приложения вы выбираете наиболее подходящий дистрибутив Linux и используете соответствующий базовый образ докера.Обычно вы учитываете размер, менеджер пакетов по умолчанию и скользящие / стабильные правила развертывания.
Фактически, вы можете создать свой образ с LFS
или минимальным кодом, используя FROM scratch
директива, но я сомневаюсь, что это стоило потраченного времени.
Итак, возвращаясь к вашим вопросам:
Но я запутался, как такая ОС, как UBUNTU, развертывается в качестве контейнера на докере?
Просто монтируется как tar.gz rootfs
Тогда почему ОС также используется в качестве контейнеров?
Чтобы у вас был менеджер пакетов, glibc и другие вещи.Вам нравится RUN apt-get install -y whatever
, не так ли?
Операционная система рассматривается как приложение в докере?
Нет, в Docker отсутствует концепция приложения .Единственный основной процесс, который поддерживает жизнь контейнера.И ОС НЕ рассматривается как основной процесс.