Автор (ы) | Соломон Хайкс |
---|---|
Разработчик (и) | Docker, Inc. |
Первоначальный выпуск | 20 марта, 2013; 7 лет назад (20.03.2013) |
Стабильный выпуск | 19.03.13 / 16 сентября 2020 г.; 27 дней назад (2020-09-16) |
Репозиторий | |
Написано на | Go |
Операционной системе | Linux, Windows, macOS |
Платформа | x86-64, ARM, s390x, ppc64le |
Тип | виртуализация на уровне ОС |
Лицензия |
|
Веб-сайт | www.docker.com |
Docker - это набор продуктов платформа как услуга (PaaS), которые используют ОС -уровневая виртуализация для доставки программного обеспечения в пакетах, называемых контейнерами. Контейнеры изолированы друг от друга и объединяют собственное программное обеспечение, библиотеки и файлы конфигурации; они могут общаться друг с другом через четко определенные каналы. Все контейнеры запускаются одним ядром операционной системы и поэтому используют меньше ресурсов, чем виртуальные машины.
. У службы есть как бесплатные, так и премиум-уровни. Программное обеспечение, на котором размещаются контейнеры, называется Docker Engine . Впервые он был запущен в 2013 году и разработан Docker, Inc.
Docker Inc. была основана Соломоном Хайксом и Себастьеном Палом во время Y Combinator Summer Группа инкубаторов стартапов 2010 и запущена в 2011. Хайкс начал проект Docker во Франции как внутренний проект в рамках dotCloud, компании, предлагающей платформу как услугу.
Docker дебютировал в Санта-Кларе на PyCon в 2013 году. Он был выпущен как с открытым исходным кодом в марте 2013 года. В то время он использовал LXC в качестве среды выполнения по умолчанию. Год спустя, с выпуском версии 0.9, Docker заменил LXC собственным компонентом, написанным на языке программирования Go.
В 2017 году Docker создал проект Moby для открытых исследования и разработки.
Docker может упаковать приложение и его зависимости в виртуальный контейнер, который может работать на любом сервере Linux. Это позволяет приложению работать в различных местах, например локально, в публичном облаке и / или в частном облаке. Docker использует функции изоляции ресурсов ядра Linux (например, cgroups и пространства имен ядра ) и файловую систему с возможностью объединения ( например, OverlayFS ), чтобы контейнеры могли работать в одном экземпляре Linux, избегая накладных расходов на запуск и обслуживание виртуальных машин.
Поскольку контейнеры Docker легковесны, можно запускать один сервер или виртуальную машину несколько контейнеров одновременно. Анализ 2018 года показал, что типичный вариант использования Docker включает запуск восьми контейнеров на каждый хост, и что четверть проанализированных организаций используют 18 или более контейнеров на хост.
Поддержка пространств имен ядром Linux в основном изолирует представление приложения о операционная среда, включая деревья процессов, сеть, идентификаторы пользователей и смонтированные файловые системы, в то время как контрольные группы ядра обеспечивают ограничение ресурсов для памяти и процессора. Начиная с версии 0.9, Docker включает свой собственный компонент (называемый «libcontainer») для прямого использования средств виртуализации, предоставляемых ядром Linux, в дополнение к использованию абстрактных интерфейсов виртуализации через libvirt, LXC и systemd-nspawn.
Docker реализует высокоуровневый API для предоставления облегченных контейнеров, которые запускают процессы изолированно.
Программное обеспечение Docker как Предложение услуг состоит из трех компонентов:
dockerd
, представляет собой постоянный процесс, который управляет контейнерами Docker и обрабатывает объекты контейнеров. Демон прослушивает запросы, отправленные через Docker Engine API. Клиентская программа Docker, называемая docker
, предоставляет интерфейс командной строки, который позволяет пользователям взаимодействовать с демонами Docker.docker-compose
позволяет пользователям запускать команды одновременно в нескольких контейнерах, например, создавать образы, масштабировать контейнеры, запускать контейнеры, которые были остановлены, и многое другое. Команды, относящиеся к манипулированию изображениями или интерактивные параметры пользователя, не актуальны в Docker Compose, поскольку они обращаются к одному контейнеру. Файл docker-compose.yml используется для определения служб приложения и включает в себя различные параметры конфигурации. Например, параметр build
определяет параметры конфигурации, такие как путь к файлу Docker, параметр command
позволяет переопределить команды Docker по умолчанию и многое другое. Первая общедоступная бета-версия Docker Compose (версия 0.0.1) была выпущена 21 декабря 2013 года. Первая готовая к работе версия (1.0) была выпущена 16 октября 2014 года.docker swarm
CLI позволяет пользователям запускать контейнеры Swarm, создавать токены обнаружения, перечислять узлы в кластере и т. Д. Утилита docker node
CLI позволяет пользователям запускать различные команды для управления узлами в рое, например, перечисление узлов в рое, обновление узлов и удаление узлов из роя. Docker управляет роями, используя алгоритм консенсуса Raft . Согласно Raft, для выполнения обновления большинству узлов Swarm необходимо согласие на обновление.