Docker – это программная платформа с открытым исходным кодом для создания, развертывания и управления виртуализированными контейнерами приложений на базе общей операционной системы (ОС) с экосистемой сопутствующих инструментов. Дебют контейнерной технологии Docker состоялся в 2013 году; компания Docker Inc. была создана для поддержки коммерческой версии программного обеспечения для управления контейнерами и в качестве главного спонсора версии с открытым исходным кодом. Компания Mirantis приобрела бизнес Docker Enterprise в ноябре 2019 года.
Как работает Docker
Docker упаковывает, резервирует и запускает контейнеры. Технология контейнеров доступна через операционную систему: Контейнер упаковывает прикладную службу или функцию со всеми библиотеками, конфигурационными файлами, зависимостями и другими необходимыми для работы частями и параметрами. Каждый контейнер пользуется услугами одной базовой операционной системы. Образы Docker содержат все зависимости, необходимые для выполнения кода внутри контейнера, поэтому контейнеры, перемещаемые между средами Docker с одной и той же ОС, работают без изменений.
Docker использует изоляцию ресурсов в ядре ОС для запуска нескольких контейнеров на одной ОС. Это отличается от виртуальных машин (ВМ), которые инкапсулируют всю ОС с исполняемым кодом поверх абстрактного слоя физических аппаратных ресурсов.
Docker был создан для работы на платформе Linux, но в настоящее время он расширился и предлагает более широкую поддержку операционных систем, отличных от Linux, включая Microsoft Windows и Apple OS X. Существуют версии Docker для Amazon Web Services (AWS) и Microsoft Azure.
Компоненты и инструменты Docker
Docker Community Edition является открытым исходным кодом, а Docker Enterprise Edition – это коммерциализированная версия, предлагаемая компанией Docker Inc. Docker состоит из различных компонентов и инструментов, которые помогают создавать, проверять и управлять контейнерами.
Docker Engine – это базовая технология, которая обрабатывает задачи и рабочие процессы, связанные с созданием приложений на основе контейнеров. Движок создает серверный демон-процесс, на котором размещаются образы, контейнеры, сети и тома хранения. Демон также предоставляет клиентский интерфейс командной строки (CLI) для взаимодействия пользователей с демоном через интерфейс прикладного программирования Docker. Контейнеры, создаваемые Docker, называются Dockerfiles. Файлы Docker Compose определяют состав компонентов в контейнере Docker.
Docker Hub – это программное обеспечение как услуга, позволяющее пользователям публиковать и совместно использовать приложения на основе контейнеров с помощью общей библиотеки. Сервис предлагает более 100 000 общедоступных приложений, а также публичные и частные реестры контейнеров.
Подобно Hub, Trusted Registry – это репозиторий с дополнительным уровнем контроля и владения над хранением и распространением образов контейнеров.
Режим Docker swarm в Docker Engine поддерживает балансировку нагрузки кластера для Docker. Ресурсы нескольких хостов Docker объединяются в один, что позволяет пользователям быстро масштабировать развертывание контейнеров на нескольких хостах.
Universal Control Plane – это унифицированный веб-интерфейс управления кластером и приложениями.
Compose – это инструмент для настройки сервисов многоконтейнерных приложений, просмотра состояния контейнеров, потокового вывода журналов и запуска одноэкземплярных процессов.
Content Trust – это инструмент безопасности для проверки целостности удаленных реестров Docker с помощью подписей пользователей и тегов изображений.
Версии и основные возможности Docker
В Docker Enterprise 1.13, выпущенной в январе 2017 года, добавлена обратная совместимость интерфейса командной строки (CLI) для работы со старыми демонами Docker, несколько команд очистки для более эффективного управления дисковым пространством и данными, а также исправлены некоторые ошибки безопасности и ошибки. Другие усовершенствования Docker Enterprise в 2017 году включали поддержку встроенной системы Kubernetes для оркестровки контейнеров в дополнение к режиму роя Docker, а также поддержку IBM mainframe и Windows Server 2016, чтобы пользователи могли запускать смешанные кластеры и приложения на нескольких операционных системах.
Docker Enterprise Edition 2.0, выпущенный в апреле 2018 года, включает поддержку нескольких ОС и нескольких облаков для гибридных сред.
В Docker Enterprise 3.0, последнем выпуске по состоянию на июль 2019 года, добавлены обновления кластеров сине-зеленых контейнеров и возможность создания мультисервисных приложений на основе контейнеров, запускаемых из любой среды. Другие новые функции включают:
- Docker Desktop Enterprise, который позволяет разработчикам развертывать приложения в среде, соответствующей Kubernetes, с автоматической интеграцией конвейеров и централизованным управлением ИТ;
- Docker Applications, набор инструментов повышения производительности для разработчиков;
- Docker Kubernetes Service, который автоматизирует управление и масштабирование приложений на базе Kubernetes и обеспечивает безопасность, контроль доступа и автоматизированное управление жизненным циклом; и
- Docker Enterprise as a Service – полностью управляемый контейнерный сервис для предприятий.
Преимущества и недостатки Docker
Docker стал стандартной платформой де-факто для быстрого составления, создания, развертывания, масштабирования и контроля контейнеров на хостах Docker. Docker обеспечивает высокую степень переносимости, так что пользователи могут регистрировать и совместно использовать контейнеры на различных узлах в частных и публичных средах. Преимущества Docker включают эффективную разработку приложений, меньшее использование ресурсов и более быстрое развертывание по сравнению с виртуальными машинами.
Структура виртуальных машин в сравнении с Docker.
Существуют также потенциальные проблемы, связанные с Docker. Огромное количество контейнеров, возможных на предприятии, может оказаться сложным для эффективного управления. Поскольку использование контейнеров эволюционирует от гранулированного виртуального хостинга к оркестровке компонентов и ресурсов приложений, распределение и объединение компонентных приложений, которые могут включать сотни эфемерных контейнеров, является серьезным препятствием.
В последние годы Docker был вытеснен Kubernetes для оркестровки контейнеров; однако большинство предложений Kubernetes фактически запускают Docker за кулисами.
Безопасность Docker
Исторически сложилось так, что контейнеры – и Docker, как синонимичное расширение, – это безопасность. Несмотря на отличную логическую изоляцию, контейнеры все еще используют операционную систему хоста. Атака или недостаток в базовой операционной системе может потенциально скомпрометировать все контейнеры, работающие на базе этой ОС. Уязвимости могут касаться доступа и авторизации, образов контейнеров и сетевого трафика между контейнерами. Образы Docker по умолчанию могут сохранять root-доступ к хосту, хотя это часто переносится из пакетов сторонних производителей.
Docker регулярно добавляет в платформу Docker усовершенствования безопасности, такие как сканирование образов, безопасное внедрение узлов, криптографическая идентификация узлов, сегментация кластера и безопасное распространение секретов. Управление секретами Docker также существует в Kubernetes, а также в D2iQ, CISOfy Lynis и HashiCorp Vault. Появились различные инструменты сканирования безопасности контейнеров: Aqua, Twistlock, NeuVector и другие.
Некоторые организации запускают контейнеры внутри виртуальной машины, хотя контейнеры не требуют виртуальных машин – это не решает вектор проблемы общих ресурсов, но смягчает потенциальное воздействие дефектов безопасности. Другой альтернативой является использование более низкопрофильных или “микро” ВМ, которые не требуют таких же накладных расходов, как обычные ВМ; примерами могут служить gVisor, Kata Containers и Amazon Firecracker. Прежде всего, наиболее распространенным и рекомендуемым шагом для обеспечения безопасности контейнеров является отказ от использования хостов контейнеров в Интернете и использование образов контейнеров только из известных источников.
Безопасность также была главным аргументом в пользу альтернатив Docker, в частности, rkt от CoreOS. Однако Docker сделал много шагов для улучшения своих возможностей безопасности, и в то же время импульс для этих контейнерных альтернатив ослаб.
Альтернативы Docker, экосистема и стандартизация
Существуют сторонние инструменты, которые работают с Docker для решения таких задач, как управление контейнерами и кластеризация. Экосистема Docker включает в себя смесь технологий с открытым исходным кодом и проприетарных технологий, таких как Kubernetes с открытым исходным кодом, проприетарная упаковка Kubernetes от Red Hat OpenShift и дистрибутив Kubernetes от Canonical, называемый “чистым” upstream Kubernetes. Docker конкурирует с проприетарными контейнерами приложений, такими как VMware vApp, и инструментами абстракции инфраструктуры, включая Chef.
Docker – не единственная доступная контейнерная платформа, но она занимает подавляющее большинство рынка контейнеров. CoreOS rkt, произносится как “ракета”, отличается своей безопасностью благодаря поддержке SELinux и доверительному управлению платформой. Компания Red Hat (сейчас принадлежит IBM) приобрела CoreOS и интегрировала ее функциональность в свою архитектуру OpenShift. Однако сейчас rkt является архивным проектом Cloud Native Computing Foundation.
Другие основные контейнерные платформы включают LXD, разработанную Canonical (и ее версию Ubuntu Linux), и OpenVZ, самую старую из системных контейнерных платформ, первоначально разработанную Virtuozzo. OpenVZ сочетает в себе небольшой размер и высокую скорость стандартных контейнеров с дополнительной безопасностью абстрагированного уровня ОС.
Docker также сыграл ведущую роль в инициативе по более официальной стандартизации упаковки и распространения контейнеров: Open Container Initiative, созданной для поддержки общего формата контейнеров и среды выполнения. В число ее членов входят также более 40 других поставщиков контейнерной индустрии, включая CoreOS, AWS, Intel, Red Hat и Virtuozzo.
Наконец, Windows Server 2019 и Windows 10 предлагают прямую поддержку контейнеров с помощью функции Windows container, основанной на технологии Docker.
История компании Docker
Впервые Docker был выпущен в качестве платформы с открытым исходным кодом в марте 2013 года под названием dotCloud. Docker Engine 1.0 был запущен в 2014 году. В 2016 году Docker интегрировал свою оркестровку роя с Docker Engine в версии 1.12. Более широкой целью компании Docker было развитие бизнеса с использованием контейнеров как услуги, но в конечном итоге эти планы были отодвинуты на второй план появлением Kubernetes.
Docker Enterprise был представлен в марте 2017 года, и компания также передала свою утилиту для выполнения контейнеров containerd в фонд Cloud Native Computing Foundation.
В ноябре 2019 года компания Mirantis приобрела продукты Docker и IP вокруг Docker Engine – Enterprise, Docker Trusted Registry, Docker Universal Control Plane и Docker CLI, а также коммерческий продукт Docker Swarm. Первоначально компания Mirantis заявила, что сместит акцент на Kubernetes и в конечном итоге прекратит поддержку Docker Swarm, но позже подтвердила свое намерение поддерживать и разрабатывать новые функции для него. Оставшаяся компания Docker Inc. теперь сосредоточена на Docker Desktop, а также на Docker Hub.
Добавить комментарий