Традиционная технология виртуальных машин виртуализирует физические ресурсы (такие как процессоры, память, хранилище и т. д.) в несколько независимых виртуальных машин путем запуска уровня виртуализации (гипервизора) на физическом оборудовании. Каждая виртуальная машина имеет свою собственную операционную систему и приложения, которые работают в собственной виртуальной среде, изолированной от физического оборудования и других виртуальных машин.
Однако работа традиционных виртуальных машин требует больших ресурсов, включая дисковое пространство, память и производительность процессора. Для каждой виртуальной машины требуется полная копия операционной системы и приложений, что приводит к увеличению использования ресурсов и времени запуска.
Контейнерная технология представляет собой дальнейшую эволюцию в области виртуализации, в которой применяется более легкий метод виртуализации. Контейнерная технология использует функцию контейнеризации операционной системы (например, контейнеров Linux) для достижения изоляции приложений и виртуализации рабочей среды путем изоляции пространства имен, файловой системы и группы управления ресурсами (cgroups) процесса.
Как основной инструмент для создания контейнеров, Docker в последние годы быстро развивался. Его преимущество заключается в том, что он позволяет разработчикам инкапсулировать различные приложения и файлы зависимостей приложений, необходимые предприятиям, в файлы образов Docker, а затем запускать их на любом физическом устройстве (устройстве Linux). или оконное устройство) и т. д.) для реализации виртуализации, позволяющей полностью отделить приложения от базового оборудования, а также гибко переносить и развертывать их между физическими машинами, освобождая инженеров по эксплуатации и техническому обслуживанию от громоздкого развертывания среды, значительно повышая эффективность работы и сокращая затраты. затраты на развертывание; потенциальные риски в процессе.
Контейнеры Docker имеют следующие четыре характеристики:
Легкость: контейнеры Docker основаны на технологии виртуализации на уровне операционной системы. По сравнению с традиционными виртуальными машинами контейнеры более легкие. Каждый контейнер использует ядро операционной системы хоста и содержит только приложение и зависимости, необходимые для его запуска, поэтому контейнеры запускаются и останавливаются очень быстро.
Изоляция: каждый контейнер Docker изолирован друг от друга и имеет собственную файловую систему, пространство процессов и сетевой интерфейс. Это означает, что контейнеры независимы друг от друга и не влияют друг на друга. На одном хосте можно одновременно запускать несколько контейнеров, и каждый контейнер представляет собой независимую виртуальную среду.
Переносимость. Контейнеры Docker могут работать в различных операционных системах и облачных платформах, что делает их очень портативными. Приложение и его зависимости внутри контейнера упаковываются в автономный портативный модуль, который можно легко развернуть и перенести между средами разработки, тестирования и производства.
Масштабируемость: контейнеры Docker можно легко масштабировать по горизонтали. Используя инструменты оркестрации контейнеров (такие как Docker Compose, Kubernetes и т. д.), можно запускать, останавливать и управлять несколькими экземплярами контейнера автоматически или вручную в соответствии с потребностями удовлетворения различных требований к нагрузке.
Docker-контейнеры и традиционная технология VM отличаются технической реализацией. На следующем рисунке показана логическая композиция виртуальной машины и контейнера Docker:
Виртуальная машина (ВМ): Используйте гипервизор, чтобы предоставить работающую платформу для виртуальных машин и управлять работой операционной системы на каждой виртуальной машине. Каждая виртуальная машина должна иметь собственную операционную систему, приложения и необходимые файлы зависимостей.
Докер-контейнер: Использование механизма Docker для планирования и изоляции улучшает использование ресурсов и позволяет запускать больше экземпляров контейнера с теми же аппаратными возможностями. Каждый контейнер имеет собственное изолированное пользовательское пространство.
Сравнение виртуальных машин и контейнеров Docker
По сравнению с ВМ, Docker-контейнер, как облегченный метод виртуализации, имеет следующие существенные преимущества в применении:
На следующем рисунке можно интуитивно понять разницу между контейнерами Docker и традиционными методами виртуальных машин:
Пять основных компонентов Docker
Сборка изображения:
Основой контейнера Docker является образ Docker, который представляет собой шаблон, доступный только для чтения и содержащий файловую систему и зависимости, необходимые для запуска приложения. Образы можно создать, написав файл Dockerfile и выполнив команду сборки. Dockerfile определяет шаги по созданию образа, такие как установка пакетов программного обеспечения, настройка среды и т. д.
Создание контейнера:
Контейнеры можно создавать на основе определенного образа с помощью инструмента командной строки Docker или API Docker. При создании контейнера вы можете указать такие параметры, как имя контейнера, настройки сети и сопоставление портов. Каждый контейнер имеет уникальный идентификатор и изолированную операционную среду.
Изоляция файловой системы:
Контейнеры Docker используют пространства имен ядра Linux, группы управления (cgroups) и другие технологии для обеспечения изоляции файловой системы между контейнерами. Каждый контейнер имеет собственное представление о файловой системе, но они используют общее ядро операционной системы хоста.
Запустите приложение:
Приложения и процессы внутри контейнеров могут выполняться в независимых рабочих средах. Контейнеры Docker могут запускать любые приложения, которые могут выполняться в операционной системе, например веб-серверы, базы данных и т. д. Приложения внутри контейнеров могут предоставлять услуги посредством сетевого взаимодействия с хостом или другими контейнерами.
Управление контейнерами:
Docker предоставляет набор инструментов командной строки и API для управления и мониторинга контейнеров. Эти инструменты могут запускать, останавливать, перезапускать, удалять контейнеры и т. д. В то же время Docker также поддерживает инструменты оркестрации контейнеров, такие как Docker Compose и Kubernetes, которые можно использовать для автоматического управления и расширения нескольких контейнеров.
Docker: Docker — одна из самых популярных платформ контейнеризации, доступных в настоящее время. Он предоставляет стандартный формат контейнера и среду выполнения, которая позволяет разработчикам упаковывать приложения и их зависимости в автономный переносимый контейнер. Docker предоставляет мощные инструменты и возможности для создания, развертывания и управления контейнерными приложениями.
Контейнер апплетов FinClip:FinClipпредставляет собой мобильную версиюМини-программная контейнерная платформа。Он предоставляет набор небольших программконтейнеррешения,Позволяет разработчикам встраивать и запускать мини-программы в мобильные приложения. FinClip предоставляет ряд API и инструментов.,Позволяет разработчикам интегрировать небольшие программы в мобильные приложения в стиле контейнера.,и взаимодействовать с функционалом мобильного приложения.
Kubernetes (K8s): Kubernetes — это платформа оркестрации контейнеров с открытым исходным кодом, используемая для автоматизации развертывания, масштабирования и управления контейнерными приложениями. Kubernetes обеспечивает оркестрацию контейнеров, обнаружение сервисов, балансировку нагрузки, автоматическое масштабирование и другие функции, позволяя разработчикам запускать контейнерные приложения надежным и гибким способом.
Apache Mesos: Apache Mesos — это ядро распределенной системы, которое обеспечивает функции управления ресурсами и планирования задач. Он поддерживает развертывание и управление контейнерными приложениями и может быть интегрирован с различными средами выполнения контейнеров.
Cloud Foundry: Cloud Foundry — это платформа контейнеризации с открытым исходным кодом для создания, развертывания и управления приложениями. Он предоставляет контейнерную среду разработки и выполнения, которая поддерживает несколько языков программирования и платформ приложений.
LXC (контейнеры Linux): LXC — это облегченная технология виртуализации, основанная на ядре Linux и используемая для реализации контейнеризации. Он предоставляет способ изолировать процессы в независимые пространства имен для реализации изоляции приложений и управления ресурсами.
Эти технологии имеют свои собственные характеристики и сценарии применения, но их общая цель — предоставить удобную, портативную и масштабируемую контейнерную среду, упрощающую развертывание приложений и управление ими, а также обеспечивающую более эффективное использование ресурсов и надежность.