Оглавление
1. Заменит ли Docker виртуальную машину?
2.1. Изолируйте процессы через пространство имен:
2.2. Ограничение ресурсов через CGroup:
3. Что такое образ контейнера?
Docker — это способ виртуализации вычислений, аналогичный использованию виртуальных машин для виртуализации. В связи с популярностью и развитием технологии Docker в последние годы. Итак, давайте представим Docker отдельно. Сначала ответьте на следующий вопрос.
Ответ: Нет. Причина. Некоторые устаревшие приложения работают в системах Windows. Некоторые приложения можно напрямую перенести в виртуализацию, но нельзя запускать непосредственно в контейнерах. Текущая тенденция такова, что виртуальные машины и контейнеры развиваются одновременно. Преимущества контейнеров – маневренность и высокая производительность. Преимущества виртуальных машин — более сильная изоляция и более простая эксплуатация и обслуживание. Docker не только не заменит виртуальные машины, но и эти две технологии часто используются в сочетании. Многие публичные облака сначала используют технологию виртуальных машин, а затем запускают на виртуальной машине контейнеры.
Опишите контейнер одним предложением: Контейнер — это специальный процесс Linux.
Просто в Docker реализована специальная изоляция и ограничения на этот процесс, позволяющие этому процессу добиться эффекта «контейнера приложения». Эффект, которого хотят достичь контейнеры приложений, заключается в следующем. : 1: Предоставьте отдельное пространство для приложения, которое на самом деле является отдельным процессом; 2: Контейнеры не влияют друг на друга и ресурсы изолированы; 3. Контейнеры могут работать в любой среде.
Пространство имен — это метод, предоставляемый ядром Linux для изоляции системных ресурсов. Его функция заключается в изоляции ресурсов Linux в единицах пространства имен.
Пространство имен только ограничивает представление процесса ОС, но с точки зрения ОС эти ограниченные процессы ничем не отличаются от обычных процессов. Независимо от того, ограничен процесс или нет, все они используют одно и то же ядро ОС хоста. Хотя процесс-контейнер изолирован, он все равно может без ограничений использовать ресурсы хостовой ОС. Это явно не то поведение, которое должна проявлять «песочница». Поэтому необходимо ограничить системные ресурсы, которые может использовать процесс-контейнер. Это механизм Linux Control Group (сокращенно CGroup). Основная функция CGroup — ограничить верхний предел ресурсов ОС, которые может использовать процесс, таких как ЦП, память, диск, пропускная способность сети и т. д.
Цель процесса-контейнера — иметь собственную независимую файловую систему, и его собственный процесс может выполняться в этой независимой файловой системе, когда он запущен. Для этого необходимо использовать вышеупомянутое крепление Пространство имен, следует отметить, что Mount Изменения пространства имен в представлении процесса контейнера должны сопровождаться операцией зависания, чтобы они вступили в силу. Итак, перед запуском процесса контейнера необходимо смонтировать полную операционную систему Оглавление. В Linux есть готовая команда chroot, способная выполнить это действие.
Как упоминалось выше, эта файловая система, монтируемая в корне контейнера для обеспечения изолированной среды выполнения процесса контейнера, представляет собой так называемый «контейнер-образ». У него также есть более профессиональное название: rootfs (корневая файловая система). В одном предложении: контейнер-образ — это файловая система.