Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Операция [ править ]

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

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

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

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

Docker реализует высокоуровневый API для предоставления облегченных контейнеров, которые запускают процессы изолированно. [20]

Компоненты [ править ]

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

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

Инструменты [ править ]

  • Docker Compose - это инструмент для определения и запуска многоконтейнерных приложений Docker. [27] Он использует файлы YAML для настройки служб приложения и выполняет процесс создания и запуска всех контейнеров с помощью одной команды. docker-composeУтилита CLI позволяет выполнять команды на нескольких контейнерах одновременно, например, создание изображений, масштабирование контейнеров, бегая контейнеры , которые были остановлены, и многим другим. [28] Команды, связанные с манипуляциями с изображениями или интерактивные параметры пользователя, не имеют отношения к Docker Compose, поскольку они обращаются к одному контейнеру. [29] Докер-compose.ymlФайл используется для определения служб приложения и включает различные параметры конфигурации. Например, этот buildпараметр определяет параметры конфигурации, такие как путь к файлу Docker, commandпараметр позволяет переопределить команды Docker по умолчанию и многое другое. [30] Первая общедоступная бета-версия Docker Compose (версия 0.0.1) была выпущена 21 декабря 2013 года. [31] Первая готовая к производству версия (1.0) была выпущена 16 октября 2014 года. [32]
  • Docker Swarm предоставляет встроенные функции кластеризации для контейнеров Docker, которые превращают группу механизмов Docker в единый виртуальный механизм Docker. [33] В Docker 1.12 и выше режим Swarm интегрирован с Docker Engine. [34]docker swarm CLI [35] утилита позволяет пользователям запускать контейнеры SWARM, создавать обнаружения маркеров, список узлов в кластере, и многое другое. [36]docker node утилита CLI позволяет пользователям выполнять различные команды для управления узлами в рое, например, список узлов в рое, обновление узлов и удаление узлов из роя. [37] Docker управляет роями, используя консенсус Raft. алгоритм. Согласно Raft, для выполнения обновления большинство узлов Swarm должны согласиться на обновление. [38] [39]
  • Том Docker Если вы копируете или создаете файл в контейнере, когда вы останавливаете этот контейнер, этот файл или другие файлы, которые мы создали или скопировали, будут удалены. Решение для этого - использование Docker Volume. [40]

История [ править ]

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

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

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

Принятие [ править ]

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

См. Также [ править ]

  • DevOps
  • Набор инструментов DevOps
  • Микросервисы
  • Виртуализация на уровне ОС
  • Архитектура сервисных компонентов
  • gVisor
  • Список контейнеров Linux
  • Kubernetes

Ссылки [ править ]

  1. Барбье, Жюльен (9 июня 2014 г.). «Это здесь: Docker 1.0» . Докер . Докер, Инк . Проверено 30 сентября 2019 года .
  2. ^ «Примечания к выпуску Docker Engine» . docker.com . Докер, Инк . Проверено 20 апреля 2021 года .
  3. ^ "Исходный код Docker" . Докер / Дистрибутив репо . Docker, Inc. 12 октября 2015 . Проверено 24 октября 2015 г. - через GitHub .
  4. Рианна Фриис, Майкл (2 марта 2017 г.). «Представляем Docker Enterprise Edition» . Блог Docker . Докер, Инк . Проверено 2 марта 2017 года .
  5. ^ O'Gara, Морин (26 июля 2013). «Бен Голуб, который продал Gluster компании Red Hat, теперь работает dotCloud» . SYS-CON Media. Архивировано из оригинального 13 сентября 2019 года.
  6. ^ «Часто задаваемые вопросы о Docker (FAQ)» . 2 марта 2019 г.
  7. ^ a b "Что такое контейнер?" . docker.com . Docker, Inc. Retrieved May +13, +2019 .
  8. ^ Ратан, Вивек (8 февраля 2017). «Докер: фаворит в мире DevOps» . Open Source For U . Проверено 14 июня 2017 года .
  9. ^ a b «Docker 0.9: Введение в драйверы исполнения и libcontainer» . Блог Docker . Docker, Inc. 10 марта 2014 . Проверено 20 января 2015 года .
  10. ^ a b Нойес, Кэтрин (1 августа 2013 г.). «Докер:« Транспортный контейнер »для кода Linux» . Linux.com . Архивировано из оригинала на 8 августа 2013 года . Проверено 9 августа 2013 года .
  11. ^ «Выберите документацию по драйверу хранилища» . Документация Docker . Архивировано из оригинала на 6 декабря 2016 года . Проверено 7 декабря 2016 года .
  12. ^ «Документация Docker: требования к ядру» . docker.readthedocs.org . 4 января, 2014. Архивировано из оригинального 21 августа 2014 года . Проверено 20 августа 2014 года .
  13. ^ «Начать работу с Docker для Mac» . docker.com . Докер, Инк . Проверено 27 сентября 2018 года .
  14. ^ К., Крис (14 января 2019). «Легкие контейнеры Windows: использование изоляции процессов Docker в Windows 10» . Poweruser . Дата обращения 2 августа 2019 . более «легкие» реальные контейнеры (через так называемую изоляцию процессов), где контейнерные процессы выполняются непосредственно в хост-системе - все процессы на хосте и в контейнерах используют одно и то же ядро ​​Windows. Это похоже на то, как работают контейнеры в Linux.
  15. ^ «8 удивительных фактов о реальном внедрении Docker» . Датадог . Июнь 2018 . Проверено 4 сентября 2019 года .
  16. Уолш, Дэн (15 сентября 2014 г.). «Еще одна причина, по которой контейнеры не содержат: связки ключей ядра» . projectatomic.io . Проверено 13 апреля 2015 года .
  17. ^ «Ограничить ресурсы контейнера» . Документация Docker . Проверено 7 марта 2018 года .
  18. ^ a b Воан-Николс, Стивен Дж. (11 июня 2014 г.). «Docker libcontainer объединяет возможности контейнеров Linux» . ZDNet . Проверено 30 июля 2014 года .
  19. ^ "libcontainer - эталонная реализация для контейнеров" . docker / libcontainer репо . Докер, Инк . Проверено 30 июля 2014 г. - через GitHub ].
  20. ^ a b Аврам, Авель (27 марта 2013 г.). «Докер: автоматическое и последовательное развертывание программного обеспечения» . InfoQ . Проверено 9 августа 2013 года .
  21. ^ a b c d e f g "Обзор Docker" . Документация Docker . Докер, Инк . Проверено 26 февраля 2018 года .
  22. ^ "dockerd" . Документация Docker . Докер, Инк . Проверено 26 февраля 2018 года .
  23. ^ «Используйте командную строку Docker» . Документация Docker . Докер, Инк . Проверено 26 февраля 2018 года .
  24. ^ «Экосистема Docker: Введение в общие компоненты» . www.digitalocean.com . Проверено 26 февраля 2018 года .
  25. ^ «О реестре» . Документация Docker . Докер, Инк . Проверено 26 февраля 2018 года .
  26. ^ «Работа с уведомлениями» . 2 марта 2019 г.
  27. ^ «Обзор Docker Compose» . Документация Docker . Докер, Инк . Проверено 6 июля 2017 года .
  28. ^ "Составить справочник по командной строке" . Документация Docker . Докер, Инк . Проверено 28 февраля 2018 года .
  29. ^ «Управляйте контейнерами для разработки с помощью Docker Compose» . через @codeship . 27 мая 2015 года . Проверено 28 февраля 2018 года .
  30. ^ "Ссылка на файл версии 3" . Документация Docker . Докер, Инк . Проверено 28 февраля 2018 года .
  31. ^ Firshman, Бен (21 декабря 2013). «Релиз 0.0.1» . докер / составить . Docker, Inc. - через GitHub .
  32. ^ Прасад, Aanand (16 октября 2014). «Релиз 1.0.0» . докер / составить . Docker, Inc. - через GitHub .
  33. ^ «8 инструментов оркестрации контейнеров, которые нужно знать» . Linux.com . 12 апреля 2017 года . Проверено 6 июля 2017 года .
  34. ^ "Docker Swarm" . Документация Docker . Докер, Инк . Проверено 6 июля 2017 года .
  35. ^ https://docs.docker.com/engine/reference/commandline/swarm/
  36. ^ "Справочник по командной строке Swarm" . Документация Docker . Докер, Инк . Проверено 28 февраля 2018 года .
  37. ^ "докер-узел" . Документация Docker . Проверено 28 февраля 2018 года .
  38. ^ "Docker Swarm 101" . aquasec.com . Проверено 28 февраля 2018 года .
  39. ^ «Алгоритм консенсуса Raft» . raft.github.io . Проверено 28 февраля 2018 года .
  40. ^ "Docker Desktop и Руководства по Docker" . Руководство по Docker . 25 апреля 2021 . Проверено 25 апреля 2021 года .
  41. ^ Hykes, Соломон (28 марта 2018). "Au Revoir" . docker.com . Архивировано из оригинала 12 января 2021 года . Проверено 23 января 2021 года .
  42. ^ «О платформе dotCloud» . dotCloud . Архивировано из оригинального 2 -го июля 2014 года . Проверено 23 июня 2019 года .
  43. ^ Зиглер, MG (10 января 2011). "Founders Den: частный клуб для предпринимателей открывается в Сан-Франциско" . TechCrunch . Архивировано из оригинального 29 марта 2016 года . Проверено 2 февраля 2021 года .
  44. ^ «Один дом для всех ваших приложений» . dotcloud.com . Архивировано из оригинала на 17 мая 2014 года . Проверено 8 мая 2014 года .
  45. ^ «Будущее контейнеров Linux» . Канал DotCloud . Проверено 13 июля 2018 г. - через YouTube .
  46. Свон, Крис (13 марта 2014 г.). «Docker отказывается от LXC в качестве среды выполнения по умолчанию» . InfoQ . Проверено 20 января 2015 года .
  47. ^ https://collabnix.com/demystifying-the-relationship-between-moby-docker/
  48. ^ «DotCloud разворачивается и добивается больших успехов с помощью Docker, облачный сервис теперь является частью Red Hat OpenShift» . TechCrunch . 19 сентября 2013 . Проверено 20 января 2014 года .
  49. Фоли, Мэри Джо (15 октября 2014 г.). «Поддержка контейнеров Docker появится в следующем выпуске Microsoft Windows Server» . ZDNet . Проверено 16 октября 2014 года .
  50. Гатри, Скотт (15 октября 2014 г.). «Docker и Microsoft: интеграция Docker с Windows Server и Microsoft Azure» . Блог ScottGu . Microsoft . Проверено 12 января 2015 года .
  51. Рианна Барр, Джефф (13 ноября 2014 г.). «Amazon EC2 Container Service (ECS) - Управление контейнерами для облака AWS» . Блог Amazon Web Services . Проверено 29 апреля 2017 года .
  52. Рат, Джон (10 ноября 2014 г.). «Stratoscale привлекает 32 миллиона долларов для создания поддерживающих Docker облаков OpenStack на товарных серверах» . Проверено 3 января 2016 года .
  53. ^ «IBM и Docker объявляют о стратегическом партнерстве для доставки корпоративных приложений в облаке и локально» . IBM . 4 декабря 2014 . Проверено 20 апреля 2015 года .
  54. ^ Lardinois, Фредерик (22 июня 2015). «Docker, CoreOS, Google, Microsoft, Amazon и другие объединяются для разработки общего стандарта контейнеров» . TechCrunch . Проверено 8 августа 2015 года .
  55. ^ Siluk, Ширли (22 июня 2015). «Докер, команда технических гигантов по проекту открытого контейнера» . cio-today.com . Проверено 8 августа 2015 года .
  56. ^ Yegulalp, Сердар (4 апреля 2016). «Windocks делает то, чего не могут сделать Docker и Microsoft» . InfoWorld . Проверено 27 октября 2018 года .
  57. ^ «Докер - Обновленная статистика проекта» . GitHub Gist . Проверено 22 августа 2016 года .
  58. Саркар, Дона (8 июня 2016 г.). «Представляем Windows 10 Insider Preview Build 14361» . Блоги Windows . Microsoft . Проверено 19 июня, 2016 .
  59. ^ Маллани, Майкл. «Docker Momentum Analysis 2016» . LinkedIn Pulse . Проверено 5 января 2017 года .
  60. Воган-Николс, Стивен (18 июня 2019 г.). «Docker включает подсистему Windows для Linux 2» . ZDNet . CBS Interactive .
  61. ^ «Поддержка WSL 2 будет доступна в Windows 10 версий 1903 и 1909» . Командная строка Windows . 20 августа 2020 . Проверено 21 августа 2020 года .
  62. ^ «Docker Desktop и WSL 2 - Обновление Backport» . Блог Docker . 20 августа 2020 . Проверено 21 августа 2020 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Терминология контейнеров - Практическая терминология