Докер (программное обеспечение) - Docker (software)

Докер
Докер (контейнерный движок) logo.svg
Автор (ы) оригинала Соломон Хайкс
Разработчики) Docker, Inc.
Первый выпуск 20 марта 2013 г . ; 8 лет назад ( 2013-03-20 )
Стабильный выпуск
20.10.7  Отредактируйте это в Викиданных / 2 июня 2021 г . ; 4 месяца назад ( 2 июня 2021 г. )
Репозиторий
Написано в Идти
Операционная система Linux , Windows , macOS
Платформа x86-64 , ARM , s390x , ppc64le
Тип Виртуализация на уровне ОС
Лицензия Проприетарный (Enterprise Edition), Apache License 2.0 (Community Edition)
Веб-сайт docker.com

Docker - это набор продуктов « платформа как услуга» (PaaS), которые используют виртуализацию на уровне ОС для доставки программного обеспечения в пакетах, называемых контейнерами. Контейнеры изолированы друг от друга и объединяют собственное программное обеспечение, библиотеки и файлы конфигурации; они могут общаться друг с другом через четко определенные каналы. Поскольку все контейнеры совместно используют службы одного ядра операционной системы , они используют меньше ресурсов, чем виртуальные машины .

У сервиса есть как бесплатные, так и премиальные уровни. Программное обеспечение, на котором размещаются контейнеры, называется Docker Engine . Впервые он был запущен в 2013 году и разработан Docker, Inc.

Операция

Docker может использовать разные интерфейсы для доступа к функциям виртуализации ядра Linux.

Docker может упаковать приложение и его зависимости в виртуальный контейнер, который может работать на любом компьютере под управлением Linux, Windows или macOS. Это позволяет приложению работать в различных местах, например локально , в общедоступном облаке и / или в частном облаке . При работе в Linux Docker использует функции изоляции ресурсов ядра Linux (такие как cgroups и пространства имен ядра ) и файловую систему с возможностью объединения (например, OverlayFS ), чтобы позволить контейнерам работать в одном экземпляре Linux, избегая накладных расходов на запуск и обслуживание виртуальных машин . Docker в macOS использует виртуальную машину Linux для запуска контейнеров.

Поскольку контейнеры Docker имеют малый вес, на одном сервере или виртуальной машине может одновременно работать несколько контейнеров. Анализ 2018 года показал, что типичный вариант использования Docker включает запуск восьми контейнеров на хост, а четверть проанализированных организаций используют 18 или более контейнеров на хост.

Поддержка пространств имен ядром Linux в основном изолирует представление приложения об операционной среде, включая деревья процессов, сеть, идентификаторы пользователей и смонтированные файловые системы, в то время как контрольные группы ядра обеспечивают ограничение ресурсов для памяти и ЦП. Начиная с версии 0.9, Docker включает собственный компонент (называемый « libcontainer ») для использования средств виртуализации, предоставляемых непосредственно ядром Linux, в дополнение к использованию абстрактных интерфейсов виртуализации через libvirt , LXC и systemd-nspawn .

Docker реализует высокоуровневый API для предоставления облегченных контейнеров, которые запускают процессы изолированно. Контейнеры Docker - это стандартные процессы, поэтому можно использовать функции ядра для отслеживания их выполнения, включая, например, использование таких инструментов, как strace, для наблюдения и вмешательства в системные вызовы.

Компоненты

Программное обеспечение Docker как услуга состоит из трех компонентов:

  • Программное обеспечение: вызываемый демон Docker dockerd- это постоянный процесс, который управляет контейнерами Docker и обрабатывает объекты-контейнеры. Демон прослушивает запросы, отправленные через Docker Engine API. Вызываемая клиентская программа Docker dockerпредоставляет интерфейс командной строки (CLI), который позволяет пользователям взаимодействовать с демонами Docker.
  • Объекты: объекты Docker - это различные объекты, используемые для сборки приложения в Docker. Основные классы объектов Docker - это изображения, контейнеры и сервисы.
    • Контейнер Docker - это стандартизированная инкапсулированная среда, в которой запускаются приложения. Контейнер управляется с помощью Docker API или интерфейса командной строки .
    • Образ Docker - это шаблон только для чтения, используемый для создания контейнеров. Изображения используются для хранения и доставки приложений.
    • Служба Docker позволяет масштабировать контейнеры между несколькими демонами Docker. Результат известен как рой , набор взаимодействующих демонов, которые общаются через Docker API.
  • Реестры: Реестр Docker - это репозиторий для образов Docker. Клиенты Docker подключаются к реестрам для загрузки («выталкивания») образов для использования или загрузки («проталкивания») образов, которые они создали. Реестры могут быть публичными или частными. Два основных общедоступных реестра - это Docker Hub и Docker Cloud. Docker Hub - это реестр по умолчанию, в котором Docker ищет образы. Реестры Docker также позволяют создавать уведомления на основе событий.

Инструменты

  • Docker Compose - это инструмент для определения и запуска многоконтейнерных приложений Docker. Он использует файлы YAML для настройки служб приложения и выполняет процесс создания и запуска всех контейнеров с помощью одной команды. Утилита CLI позволяет выполнять команды на нескольких контейнерах одновременно, например, создание изображений, масштабирование контейнеров, бегая контейнеры , которые были остановлены, и многим другим. Команды, связанные с манипуляциями с изображениями или интерактивные параметры пользователя, не актуальны в Docker Compose, поскольку они обращаются к одному контейнеру. Докер-compose.yml файл используется для определения сервисов приложения , и включает в себя различные варианты конфигурации. Например, этот параметр определяет параметры конфигурации, такие как путь к файлу Docker, параметр позволяет переопределить команды Docker по умолчанию и многое другое. Первая общедоступная бета-версия Docker Compose (версия 0.0.1) была выпущена 21 декабря 2013 года. Первая готовая к работе версия (1.0) была выпущена 16 октября 2014 года.docker-composebuildcommand
  • Docker Swarm предоставляет встроенные функции кластеризации для контейнеров Docker, которые превращают группу механизмов Docker в единый виртуальный механизм Docker. В Docker 1.12 и выше режим Swarm интегрирован с Docker Engine. docker swarmУтилита CLI позволяет пользователям запускать контейнеры Swarm, создавать обнаружения маркеров, список узлов в кластере, и многое другое. docker nodeУтилита CLI позволяет выполнять различные команды для управления узлами в рое, например, список узлов роемов, обновление узлов и удаление узлов из роя. Docker управляет роями, используя алгоритм консенсуса Raft . Согласно Raft, для выполнения обновления большинство узлов Swarm должны согласиться на обновление.
  • Том Docker Если вы копируете или создаете файл в контейнере, при остановке этого контейнера этот файл (и любые другие созданные или скопированные файлы) будут удалены. Docker Volumeэто решение этой проблемы.

История

Docker Inc. была основана Камелем Фунади, Соломоном Хайксом и Себастьяном Палом во время группы инкубаторов стартапов Y Combinator Summer 2010 и запущена в 2011 году. Стартап также был одним из 12 стартапов в первой когорте Founder's Den . Хайкс начал проект Docker во Франции как внутренний проект в dotCloud , компании, предлагающей платформу как услугу .

Docker был представлен публике в Санта-Кларе на выставке PyCon в 2013 году. Он был выпущен как открытый исходный код в марте 2013 года. В то время он использовал LXC в качестве среды выполнения по умолчанию. Год спустя, с выпуском версии 0.9, Docker заменил LXC собственным компонентом libcontainer , написанным на языке программирования Go .

В 2017 году Докер создал проект Moby для открытых исследований и разработок.

Принятие

  • 19 сентября 2013 г .: Red Hat и Docker объявили о сотрудничестве в области Fedora , Red Hat Enterprise Linux (RHEL) и OpenShift .
  • 15 октября 2014 г .: Microsoft объявила об интеграции движка Docker в Windows Server , а также о встроенной поддержке роли клиента Docker в Windows.
  • Ноябрь 2014 г .: анонсированы контейнерные сервисы Docker для Amazon Elastic Compute Cloud (EC2).
  • 10 ноября 2014 г .: Docker объявил о партнерстве со Stratoscale .
  • 4 декабря 2014 г .: IBM объявила о стратегическом партнерстве с Docker, которое позволяет Docker более тесно интегрироваться с IBM Cloud.
  • 22 июня 2015 г .: Docker и несколько других компаний объявили, что они работают над новым стандартом для программных контейнеров, не зависящим от поставщика и операционной системы.
  • Апрель 2016: Windocks, независимый поставщик программного обеспечения, выпустил перенос проекта Docker с открытым исходным кодом на Windows, поддерживающий Windows Server 2012 R2 и Server 2016, со всеми выпусками SQL Server 2008 и более поздними версиями.
  • Май 2016 г .: анализ показал, что основными участниками Docker стали следующие организации: команда Docker, Cisco , Google , Huawei , IBM , Microsoft и Red Hat .
  • 8 июня 2016 г .: Microsoft объявила, что Docker теперь можно использовать изначально в Windows 10 .
  • Январь 2017 г .: анализ упоминаний в профиле LinkedIn показал, что в 2016 г. присутствие Docker выросло на 160%.
  • 6 мая 2019 г .: Microsoft анонсировала вторую версию подсистемы Windows для Linux (WSL). Компания Docker, Inc. объявила, что она начала работу над версией Docker для Windows, которая работает на WSL 2. В частности, это означает, что Docker может работать в Windows 10 Home (ранее она была ограничена Windows Pro и Enterprise, поскольку использовала Hyper- V).
  • Август 2020: Microsoft объявила об обратном переносе WSL2 на Windows 10 версий 1903 и 1909 (ранее WSL2 был доступен только в версии 2004), а разработчики Docker объявили о доступности Docker для этих платформ.
  • Август 2021 года: Docker Desktop больше не является бесплатным для корпоративных пользователей. Docker прекратил бесплатное использование Docker Desktop для крупных бизнес-клиентов и заменил свой бесплатный план личным.

Смотрите также

использованная литература

внешние ссылки