Докер (программное обеспечение)
![]() | |
Оригинальный автор(ы) | Соломон Хайкс |
---|---|
Разработчик(и) | Докер, Инк. |
Первоначальный выпуск | 20 марта 2013 г [1] |
Стабильная версия | 26.1.4 [2] ![]() |
Репозиторий | |
Написано в | Идти [3] |
Операционная система | Линукс , Виндовс , МакОС |
Платформа | x86-64 , ARM , s390x , ppc64le |
Тип | Виртуализация на уровне ОС |
Лицензия |
|
Веб-сайт | docker.com |

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

Docker может упаковать приложение и его зависимости в виртуальный контейнер, который может работать на любом компьютере с Linux , Windows или macOS . Это позволяет приложению работать в различных местах, например , локально , в публичном (см. децентрализованные вычисления , распределенные вычисления и облачные вычисления ) или в частном облаке . [10] При работе в Linux Docker использует функции изоляции ресурсов ядра Linux (например, cgroups и пространства имен ядра ) и файловую систему с возможностью объединения (например, OverlayFS ). [11] чтобы позволить контейнерам работать в одном экземпляре Linux, избегая накладных расходов на запуск и обслуживание виртуальных машин . [12] Docker в macOS Linux использует виртуальную машину для запуска контейнеров. [13]
Поскольку контейнеры Docker легкие , на одном сервере или виртуальной машине можно одновременно запускать несколько контейнеров. [14] Анализ 2018 года показал, что типичный вариант использования Docker предполагает запуск восьми контейнеров на хост, а четверть проанализированных организаций используют 18 или более контейнеров на хост. [15] Его также можно установить на одноплатный компьютер, например Raspberry Pi . [16]
Ядро Linux в основном поддерживает пространства имен. [17] изолирует представление приложения об операционной среде, включая деревья процессов, сеть, идентификаторы пользователей и смонтированные файловые системы, в то время как контрольные группы ядра обеспечивают ограничение ресурсов памяти и ЦП. [18] Начиная с версии 0.9, Docker включает в себя собственный компонент (называемый libcontainer ) для использования средств виртуализации, предоставляемых непосредственно ядром Linux, в дополнение к использованию абстрактных интерфейсов виртуализации через libvirt , LXC и systemd-nspawn . [19] [9] [10] [20]
высокого уровня Docker реализует API для предоставления легких контейнеров, которые запускают процессы изолированно. [21]
Модель лицензирования [ править ]
- Docker Engine распространяется по лицензии Apache License 2.0 . Docker Desktop распространяет некоторые компоненты, лицензированные по лицензии GNU General Public License . Docker Desktop не является бесплатным для крупных предприятий. [22]
- Файлы Dockerfile сами могут лицензироваться по лицензии с открытым исходным кодом. Областью действия такого заявления о лицензии является только файл Dockerfile, а не образ контейнера.
Компоненты [ править ]
Программное обеспечение Docker как услуга состоит из трех компонентов:
- Программное обеспечение: Docker демон , называемый
dockerd
— это постоянный процесс, который управляет контейнерами Docker и обрабатывает объекты контейнеров. Демон прослушивает запросы, отправленные через API Docker Engine. [23] [24] Клиентская программа Docker, называемаяdocker
, предоставляет интерфейс командной строки (CLI), который позволяет пользователям взаимодействовать с демонами Docker. [23] [25] - Объекты. Объекты Docker — это различные объекты, используемые для сборки приложения в Docker. Основными классами объектов Docker являются изображения, контейнеры и сервисы. [23]
- Docker Контейнер — это стандартизированная инкапсулированная среда, в которой выполняются приложения. [26] Контейнер управляется с помощью Docker API или CLI . [23] Это процесс , созданный из образа.
- Docker Образ — это шаблон, доступный только для чтения, используемый для создания контейнеров. Изображения используются для хранения и доставки приложений. [23] Это образ процесса .
- Docker Служба позволяет масштабировать контейнеры между несколькими демонами Docker. Результат известен как swarm — набор взаимодействующих демонов, которые взаимодействуют через Docker API. [23]
- Реестры. Реестр Docker — это хранилище образов Docker. Клиенты Docker подключаются к реестрам для загрузки («извлечения») образов для использования или загрузки («отправки») образов, которые они создали. Реестры могут быть публичными и частными. Основной публичный реестр — Docker Hub. Docker Hub — это реестр по умолчанию, в котором Docker ищет изображения. [23] [27] Реестры Docker также позволяют создавать уведомления на основе событий. [28]
Пример Dockerfile: [29]
ARG CODE_VERSION=latest
FROM ubuntu:${CODE_VERSION}
COPY ./examplefile.txt /examplefile.txt
ENV MY_ENV_VARIABLE="example_value"
RUN apt-get update
# Mount a directory from the Docker volume
# Note: This is usually specified in the 'docker run' command.
VOLUME ["/myvolume"]
# Expose a port (22 for SSH)
EXPOSE 22
Инструменты [ править ]
- Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker. [30] Он использует файлы YAML для настройки служб приложения и выполняет процесс создания и запуска всех контейнеров с помощью одной команды.
docker-compose
Утилита CLI позволяет пользователям запускать команды в нескольких контейнерах одновременно; например, создание образов, масштабирование контейнеров, запуск остановленных контейнеров и многое другое. [31] Команды, связанные с манипулированием изображениями или интерактивными параметрами пользователя, не актуальны в Docker Compose, поскольку они относятся к одному контейнеру. [32] Файл docker-compose.yml используется для определения служб приложения и включает различные параметры конфигурации. Например,build
Параметр определяет параметры конфигурации, такие как путь Dockerfile,command
Опция позволяет переопределить команды Docker по умолчанию и многое другое. [33] Первая публичная бета-версия Docker Compose (версия 0.0.1) была выпущена 21 декабря 2013 года. [34] Первая готовая к производству версия (1.0) была доступна 16 октября 2014 года. [35] - Docker Swarm предоставляет встроенную функцию кластеризации для контейнеров Docker, которая превращает группу механизмов Docker в один виртуальный механизм Docker. [36] В Docker 1.12 и более поздних версиях режим Swarm интегрирован с Docker Engine. [37]
docker swarm
интерфейс командной строки [38] Утилита позволяет пользователям запускать контейнеры Swarm, создавать токены обнаружения, составлять список узлов в кластере и многое другое. [39]docker node
Утилита CLI позволяет пользователям запускать различные команды для управления узлами в рое, например, составлять список узлов в рое, обновлять узлы и удалять узлы из роя. [40] Docker управляет роями, используя Raft алгоритм консенсуса . По словам Рафта, для выполнения обновления большинство узлов Swarm должно согласовать обновление. [41] [42] - Docker Volume обеспечивает независимое сохранение данных, позволяя им оставаться даже после удаления или повторного создания контейнера. [43]
История [ править ]
dotCloud Inc. была основана Камелем Фунади, Соломоном Хайксом и Себастьяном Палем. [44] во время группы инкубаторов стартапов Y Combinator Summer 2010, запущенной в 2011 году и переименованной в Docker Inc в 2013 году. [45] Стартап также вошел в число 12 стартапов первой когорты Founder's Den . [46] Хайкс запустил проект Docker во Франции как внутренний проект в рамках dotCloud , компании, предоставляющей платформу как услугу . [47]
Docker дебютировал публике в Санта-Кларе на PyCon в 2013 году. [48] Он был выпущен с открытым исходным кодом в марте 2013 года. [21] В то время он использовал LXC в качестве среды выполнения по умолчанию. Год спустя, с выпуском версии 0.9, Docker заменил LXC собственным компонентом libcontainer , написанным на языке программирования Go . [19] [49]
В 2017 году компания Docker создала проект Moby для открытых исследований и разработок. [50]
Принятие [ править ]
- 19 сентября 2013 г.: Red Hat и Docker объявили о сотрудничестве в области Fedora , Red Hat Enterprise Linux (RHEL) и OpenShift . [51]
- 15 октября 2014 г.: Microsoft объявила об интеграции движка Docker в Windows Server , а также о встроенной поддержке роли клиента Docker в Windows. [52] [53]
- Ноябрь 2014 г.: анонсированы контейнерные сервисы Docker для Amazon Elastic Compute Cloud (EC2). [54]
- 10 ноября 2014 г.: Docker объявила о партнерстве со Stratoscale . [55]
- 4 декабря 2014 г.: IBM объявила о стратегическом партнерстве с Docker, которое позволит Docker более тесно интегрироваться с IBM Cloud. [56]
- 22 июня 2015 г.: Docker и несколько других компаний объявили, что они работают над новым стандартом для программных контейнеров, независимым от поставщиков и операционных систем. [57] [58]
- Декабрь 2015 г.: Oracle Cloud добавила поддержку контейнеров Docker после приобретения StackEngine , стартапа по производству контейнеров Docker. [59]
- Апрель 2016 г.: Windocks, независимый поставщик программного обеспечения , выпустил порт проекта Docker с открытым исходным кодом для Windows, поддерживающий Windows Server 2012 R2 и Server 2016, а также все выпуски SQL Server 2008 и более поздних версий. [60]
- Май 2016 г.: анализ показал, что следующие организации вносят основной вклад в Docker: команда Docker, Cisco , Google , Huawei , IBM , Microsoft и Red Hat . [61]
- 8 июня 2016 г.: Microsoft объявила, что Docker теперь можно использовать в Windows 10 . [62]
- Январь 2017 г.: анализ упоминаний в профилях LinkedIn показал, что присутствие Docker в 2016 г. выросло на 160%. [63]
- 6 мая 2019 г.: Microsoft анонсировала вторую версию подсистемы Windows для Linux (WSL). Docker, Inc. объявила, что начала работу над версией Docker для Windows, которая будет работать на WSL 2. [64] В частности, это означало, что Docker может работать на Windows 10 Home (ранее он был ограничен Windows Pro и Enterprise, поскольку использовался Hyper-V ).
- Август 2020 г.: Microsoft объявила о переносе WSL2 на Windows 10 версий 1903 и 1909 (ранее WSL2 был доступен только в версии 2004). [65] и разработчики Docker объявили о доступности Docker для этих платформ. [66]
- Август 2021 г.: Docker Desktop для Windows и MacOS больше не доступен бесплатно для корпоративных пользователей. Docker прекратил бесплатное использование Docker Desktop для крупных бизнес-клиентов и заменил бесплатный план на личный план. Docker в дистрибутивах Linux остался незатронутым. [67]
- Декабрь 2023 г.: Docker приобрела AtomicJar, чтобы расширить свои возможности тестирования. [68]
См. также [ править ]
- DevOps
- Набор инструментов DevOps
- gVisor
- Кубернетес
- Список контейнеров Linux
- Микросервисы
- Виртуализация на уровне ОС
- Приглушенный
- Архитектура сервисных компонентов
- Singularity — альтернатива Docker для кластеров HPC
- Инициатива «Открытый контейнер»
Ссылки [ править ]
- ^ Барбье, Жюльен (9 июня 2014 г.). «Это здесь: Docker 1.0» . Докер . Докер, Инк . Проверено 30 сентября 2019 г.
- ^ «v26.1.4» . 5 июня 2024 г. . Проверено 6 июня 2024 г.
- ^ «Исходный код Docker» . репозиторий докера/дистрибутива . Docker, Inc., 12 октября 2015 г. Получено 24 октября 2015 г. — через GitHub .
- ^ «Лицензионное соглашение Docker Desktop» .
- ^ О'Гара, Морин (26 июля 2013 г.). «Бен Голуб, который продал Gluster компании Red Hat, теперь управляет dotCloud» . СИС-КОН Медиа. Архивировано из оригинала 13 сентября 2019 года.
- ↑ Перейти обратно: Перейти обратно: а б «Что такое контейнер?» . docker.com . Docker, Inc. Дата обращения 13 мая 2019 г.
- ^ Ратан, Вивек (8 февраля 2017 г.). «Docker: фаворит в мире DevOps» . Открытый исходный код для вас . Проверено 14 июня 2017 г.
- ^ «Часто задаваемые вопросы по Docker (FAQ)» . 2 марта 2019 г.
- ↑ Перейти обратно: Перейти обратно: а б «Docker 0.9: Представляем драйверы выполнения и libcontainer» . Докер-блог . Docker, Inc., 10 марта 2014 г. Проверено 20 января 2015 г.
- ↑ Перейти обратно: Перейти обратно: а б Нойес, Кэтрин (1 августа 2013 г.). «Docker: транспортный контейнер для кода Linux» . Linux.com . Архивировано из оригинала 8 августа 2013 года . Проверено 9 августа 2013 г.
- ^ «Выберите документацию по драйверу хранилища» . Документация по докеру . Архивировано из оригинала 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» . Опытный пользователь . Проверено 2 августа 2019 г.
более «облегченные» реальные контейнеры (посредством так называемой изоляции процессов), где контейнерные процессы выполняются непосредственно в хост-системе — все процессы на хосте и в контейнерах используют одно и то же ядро Windows. Это похоже на то, как работают контейнеры в Linux.
- ^ «8 удивительных фактов о реальном внедрении Docker» . Датадог . Июнь 2018 года . Проверено 4 сентября 2019 г.
- ^ Гупта, Девендер (13 октября 2022 г.). «Как установить Docker на Raspberry Pi» . Гизмоксо . Проверено 15 октября 2022 г.
- ^ Уолш, Дэн (15 сентября 2014 г.). «Еще одна причина, по которой контейнеры не содержат: брелоки ядра» . Projectatomic.io . Проверено 13 апреля 2015 г.
- ^ «Ограничить ресурсы контейнера» . Документация Докера . Проверено 7 марта 2018 г.
- ↑ Перейти обратно: Перейти обратно: а б Воган-Николс, Стивен Дж. (11 июня 2014 г.). «Docker libcontainer объединяет возможности контейнеров Linux» . ЗДНет . Проверено 30 июля 2014 г.
- ^ «libcontainer — эталонная реализация контейнеров» . репозиторий docker/libcontainer . Докер, Инк . Получено 30 июля 2014 г. — через GitHub .
- ↑ Перейти обратно: Перейти обратно: а б Аврам, Авель (27 марта 2013 г.). «Docker: автоматизированное и согласованное развертывание программного обеспечения» . ИнфоQ . Проверено 9 августа 2013 г.
- ^ «Получить Докер» .
- ↑ Перейти обратно: Перейти обратно: а б с д и ж г «Обзор Докера» . Документация Докера . Докер, Инк . Проверено 26 февраля 2018 г.
- ^ "докерд" . Документация Докера . Докер, Инк . Проверено 26 февраля 2018 г.
- ^ «Используйте командную строку Docker» . Документация Докера . Докер, Инк . Проверено 26 февраля 2018 г.
- ^ «Экосистема Docker: введение в общие компоненты» . www.digitalocean.com . Проверено 26 февраля 2018 г.
- ^ «О реестре» . Документация Докера . Докер, Инк . Проверено 26 февраля 2018 г.
- ^ «Работа с уведомлениями» . 2 марта 2019 г.
- ^ «Ссылка на Dockerfile» . Документация Докера . 14 ноября 2023 г. . Проверено 30 ноября 2023 г.
- ^ «Обзор Docker Compose» . Документация Докера . Докер, Инк . Проверено 6 июля 2017 г.
- ^ «Составьте ссылку на командную строку» . Документация Докера . Докер, Инк . Проверено 28 февраля 2018 г.
- ^ «Управление контейнерами для разработки с помощью Docker Compose» . через @codeship . 27 мая 2015 года . Проверено 28 февраля 2018 г.
- ^ «Ссылка на создание файла версии 3» . Документация Докера . Докер, Инк . Проверено 28 февраля 2018 г.
- ^ Фиршман, Бен (21 декабря 2013 г.). «Релиз 0.0.1» . докер/составить . Docker, Inc. — через GitHub .
- ^ Прасад, Ананд (16 октября 2014 г.). «Выпуск 1.0.0» . докер/составить . Docker, Inc. — через GitHub .
- ^ «8 инструментов оркестрации контейнеров, которые нужно знать» . Linux.com . 12 апреля 2017 года . Проверено 6 июля 2017 г.
- ^ «Рой докеров» . Документация Докера . Докер, Инк . Проверено 6 июля 2017 г.
- ^ «Рой докеров» . 4 июня 2021 г.
- ^ «Справочник по командной строке Swarm» . Документация Докера . Докер, Инк . Проверено 28 февраля 2018 г.
- ^ «докер-узел» . Документация Докера . Проверено 28 февраля 2018 г.
- ^ «Докерский рой 101» . aquasec.com . Проверено 28 февраля 2018 г.
- ^ «Алгоритм консенсуса Raft» . raft.github.io . Проверено 28 февраля 2018 г.
- ^ «Рабочий стол Docker и руководства по Docker» . Руководство по докеру . 25 апреля 2021 года. Архивировано из оригинала 25 апреля 2021 года . Проверено 25 апреля 2021 г.
- ^ Хайкс, Соломон (28 марта 2018 г.). «До свидания» . docker.com . Архивировано из оригинала 12 января 2021 года . Проверено 23 января 2021 г.
- ^ «О платформе dotCloud» . dotCloud . Архивировано из оригинала 2 июля 2014 года . Проверено 23 июня 2019 г.
- ^ Зайглер, М.Г. (10 января 2011 г.). «Логово основателей: в Сан-Франциско открывается частный клуб для предпринимателей» . ТехКранч . Архивировано из оригинала 29 марта 2016 года . Проверено 2 февраля 2021 г.
- ^ «Один дом для всех ваших приложений» . dotcloud.com . Архивировано из оригинала 17 мая 2014 года . Проверено 8 мая 2014 г.
- ^ «Будущее контейнеров Linux» . Канал DotCloud . Проверено 13 июля 2018 г. - через YouTube .
- ^ Свон, Крис (13 марта 2014 г.). «Docker удаляет LXC как среду выполнения по умолчанию» . ИнфоQ . Проверено 20 января 2015 г.
- ^ «Демистификация отношений между Moby и Docker – добро пожаловать в Collabnix» . 6 мая 2017 г.
- ^ «DotCloud меняет направление и выигрывает с Docker, облачным сервисом, который теперь является частью Red Hat OpenShift» . ТехКранч . 19 сентября 2013 года . Проверено 20 января 2014 г.
- ^ Фоли, Мэри Джо (15 октября 2014 г.). «Поддержка Docker-контейнеров появится в следующем выпуске Microsoft Windows Server» . ЗДНет . Проверено 16 октября 2014 г.
- ^ Гатри, Скотт (15 октября 2014 г.). «Docker и Microsoft: интеграция Docker с Windows Server и Microsoft Azure» . Блог СкоттГу . Майкрософт . Проверено 12 января 2015 г.
- ^ Барр, Джефф (13 ноября 2014 г.). «Amazon EC2 Container Service (ECS) – управление контейнерами для облака AWS» . Блог веб-сервисов Amazon . Проверено 29 апреля 2017 г.
- ^ Рат, Джон (10 ноября 2014 г.). «Stratoscale привлекает 32 миллиона долларов для создания облаков OpenStack с поддержкой Docker на стандартных серверах» . Проверено 3 января 2016 г.
- ^ «IBM и Docker объявляют о стратегическом партнерстве для доставки корпоративных приложений в облаке и локально» . ИБМ . 4 декабря 2014 года . Проверено 20 апреля 2015 г.
- ^ Лардинуа, Фредерик (22 июня 2015 г.). «Docker, CoreOS, Google, Microsoft, Amazon и другие объединяются, чтобы разработать общий стандарт контейнеров» . ТехКранч . Проверено 8 августа 2015 г.
- ^ Силук, Ширли (22 июня 2015 г.). «Docker, команда технологических гигантов над проектом открытого контейнера» . cio-today.com . Архивировано из оригинала 23 сентября 2015 года . Проверено 8 августа 2015 г.
- ^ Маклафлин, Кевин (22 декабря 2015 г.). «Oracle приобретает стартап Docker Container StackEngine и планирует построить центр облачных вычислений в Остине» . КРН . Проверено 13 января 2022 г.
- ^ Егулалп, Сердар (4 апреля 2016 г.). «Windocks делает то, чего не могут сделать Docker и Microsoft» . Инфомир . Проверено 27 октября 2018 г.
- ^ «Docker — Обновленная статистика проекта» . GitHub суть . Проверено 22 августа 2016 г.
- ^ Саркар, Дона (8 июня 2016 г.). «Анонсируем сборку 14361 Windows 10 Insider Preview» . Блоги Windows . Майкрософт . Проверено 19 июня 2016 г.
- ^ Маллани, Майкл. «Анализ Docker Momentum 2016» . LinkedIn Пульс . Проверено 5 января 2017 г.
- ^ Воган-Николс, Стивен (18 июня 2019 г.). «Docker поддерживает подсистему Windows для Linux 2» . ЗДНет . CBS Интерактив .
- ^ «Поддержка WSL 2 появится в Windows 10 версий 1903 и 1909» . Командная строка Windows . 20 августа 2020 г. . Проверено 21 августа 2020 г.
- ^ «Docker Desktop и WSL 2 — обновление Backport» . Докер-блог . 20 августа 2020 г. . Проверено 21 августа 2020 г.
- ^ Кэри, Скотт (31 августа 2021 г.). «Docker Desktop больше не является бесплатным для корпоративных пользователей» . Инфомир . Проверено 18 октября 2021 г.
- ^ Миллер, Рон (11 декабря 2023 г.). «Docker приобретает AtomicJar, стартап по тестированию, который в январе привлек 25 миллионов долларов» . ТехКранч . Проверено 13 декабря 2023 г.
Внешние ссылки [ править ]
- программное обеспечение 2013 года
- Программное обеспечение для контейнеризации
- Бесплатное программное обеспечение, написанное на Go.
- Бесплатное программное обеспечение для виртуализации
- Контейнеризация Linux
- Безопасность операционной системы
- Технология операционной системы
- Программное обеспечение виртуализации для Linux
- Программное обеспечение, использующее лицензию Apache