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