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

Докер
Докер (контейнерный движок) logo.svg
Оригинальный автор (ы)Соломон Хайкс
Разработчики)Docker, Inc.
изначальный выпуск20 марта 2013 г.; 7 лет назад (2013-03-20)[1]
Стабильный выпуск
19.03.14 / 1 декабря 2020 г.; 2 дня назад (2020-12-01)[2]
Репозиторий Отредактируйте это в Викиданных
Написано вИдти[3]
Операционная системаLinux, Windows, macOS[а]
Платформаx86-64, РУКА, s390x, ppc64le
ТипВиртуализация на уровне ОС
Лицензия
Интернет сайтdocker.com

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

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

История

Docker Inc. была основана Соломоном Хайксом и Себастьеном Палом во время Y комбинатор Лето 2010 года группа инкубаторов стартапов запущена в 2011 году.[10] Хайкс начал проект Docker во Франции как внутренний проект в рамках dotCloud, а платформа как услуга Компания.[11]

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

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

Принятие

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

Операция

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

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

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

Ядро Linux в основном поддерживает пространства имен.[38] изолирует представление приложения об операционной среде, включая деревья процессов, сеть, идентификаторы пользователей и смонтированные файловые системы, в то время как контрольные группы ядра обеспечивают ограничение ресурсов для памяти и ЦП.[39] Начиная с версии 0.9, Docker включает собственный компонент (называемый "libcontainer"), чтобы напрямую использовать средства виртуализации, предоставляемые ядром Linux, в дополнение к использованию абстрактных интерфейсов виртуализации через libvirt, LXC и systemd-nspawn.[14][32][33][40]

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

Составные части

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

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

Инструменты

  • Docker Compose это инструмент для определения и запуска многоконтейнерных приложений Docker.[47] Оно использует YAML файлы для настройки служб приложения и выполняет процесс создания и запуска всех контейнеров с помощью одной команды. В докер-сочинять Утилита CLI позволяет пользователям запускать команды сразу в нескольких контейнерах, например, создавать образы, масштабирование контейнеры, запущенные контейнеры, которые были остановлены, и многое другое.[48] Команды, связанные с манипулированием изображениями или интерактивными параметрами пользователя, не актуальны в Docker Compose, поскольку они обращаются к одному контейнеру.[49] В docker-compose.yml Файл используется для определения служб приложения и включает различные параметры конфигурации. Например, строить option определяет параметры конфигурации, такие как путь к Dockerfile, команда опция позволяет переопределить команды Docker по умолчанию и многое другое.[50] Первая публичная бета-версия Docker Compose (версия 0.0.1) была выпущена 21 декабря 2013 года.[51] Первая готовая к эксплуатации версия (1.0) была выпущена 16 октября 2014 года.[52]
  • Докер Рой предоставляет родной кластеризация функциональность для контейнеров Docker, которая превращает группу движков Docker в единый виртуальный движок Docker.[53] В Docker 1.12 и выше режим Swarm интегрирован с Docker Engine.[54] В докер рой CLI[55] Утилита позволяет пользователям запускать контейнеры Swarm, создавать токены обнаружения, перечислять узлы в кластере и многое другое.[56] В докер узел Утилита CLI позволяет пользователям запускать различные команды для управления узлами в рое, например, перечисление узлов в рое, обновление узлов и удаление узлов из роя.[57] Docker управляет роями с помощью Плот консенсус алгоритм. Согласно Raft, для выполнения обновления большинство узлов Swarm должны согласиться на обновление.[58][59]

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

Примечания

  1. ^ Докер включен macOS использует Linux виртуальная машина для запуска контейнеров.[4]

Рекомендации

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

внешняя ссылка