**Docker** — праграмнае забеспячэнне для аўтаматызацыі разгортвання і кіравання праграмамі ў асяроддзях з падтрымкай кантэйнерызацыі. Дазваляе «пакаваць» дадатак з усім яго акружэннем і залежнасцямі(?) ў кантэйнер, які можа быць разгорнуты на любой Linux-сістэме з падтрымкай кантрольных груп у ядры, а таксама прадстаўляе набор каманд для кіравання гэтымі кантэйнерамі. Першапачаткова карыстаўся магчымасцямі LXC, а з 2015 года пачаў выкарыстоўваць уласную бібліятэку, якая абстрагуе віртуалізацыйныя магчымасці ядра Linux — **libcontainer**. Са з’яўленнем Open Container Initiative пачаўся пераход ад маналітнай да модульнай архітэктуры.

Распрацоўваецца і падтрымліваецца аднайменнай кампаніяй-стартапам, распаўсюджваецца ў двух рэдакцыях — грамадскай (*Community Edition*) па ліцэнзіі Apache 2.0 і для арганізацый (*Enterprise Edition*) па прапрыетарнай ліцэнзіі. Напісаны на мове Go.

Гісторыя
--------

Праект пачаты як унутраная ўласніцкая распрацоўка кампаніі dotCloud, заснаванай Саламонам Хайксам (*Solomon Hykes*) у 2008 годзе з мэтай пабудовы публічнай PaaS- платформы з падтрымкай розных моў праграмавання. Разам з Хайксам у першапачатковай распрацоўцы значны ўдзел прынялі інжынеры dotCloud Андрэа Лудзардзі (*Andrea Luzzardi*) і Франсуа-Ксаўе Бурле (*François-Xavier Bourlet*).

У сакавіку 2013 года код Docker быў апублікаваны пад ліцэнзіяй Apache 2.0. У чэрвені 2013 года генеральным дырэктарам у dotCloud запрошаны Бэн Голуб[en], які раней кіраваў фірмай Gluster[en] (распрацоўшчык тэхналогіі размеркаванага захоўвання GlusterFS і паглынутай за $136 млн Red Hat у 2011 годзе). У кастрычніку 2013 года, падкрэсліваючы зрушванне фокусу да новай ключавой тэхналогіі, dotCloud была перайменавана ў Docker (пры гэтым PaaS-платформа захавана пад ранейшай назвай — dotCloud).

У кастрычніку 2013 года выпушчаны рэліз Havana тыражуемай IaaS-платформы OpenStack, у якім рэалізавана падтрымка Docker (як драйвер для OpenStack Nova). З лістапада 2013 года частковая падтрымка Docker уключана ў дыстрыбутыў Red Hat Enterprise Linux версіі 6.5 і поўная — у 20-ю версію дыстрыбутыва Fedora, раней былі дасягнуты пагадненні з Red Hat аб уключэнні з 2014 года Docker у тыражаваную PaaS-платформу OpenShi. У снежні 2013 года абвешчана аб падтрымцы разгортвання Docker-кантэйнераў у асяроддзі Google Compute Engine[en] .

З 2014 года вядзецца праца па ўключэнні падтрымкі Docker у асяроддзе кіравання фрэймворка размеркаваных дадаткаў Hadoop. Па выніках тэсціравання варыянтаў платформы віртуалізацыі для Hadoop, праведзенага ў маі 2014 года, Docker паказаў на асноўных аперацыях (па масавым стварэнні, перазапуску і знішчэнні віртуальных вузлоў) істотна больш высокую прадукцыйнасць, чым KVM. На тэсце масавага стварэння віртуальных вылічальных вузлоў прырост спажывання працэсарных рэсурсаў у Docker зафіксаваны ў 26 разоў ніжэй, чым у KVM, а прырост спажывання рэсурсаў аператыўнай памяці — утрая ніжэй.

З 2017 года дадаткова да свабодна распаўсюджваемай пад ліцэнзіяй Apache 2.0 рэдакцыі прадукту выпускаецца рэдакцыя для арганізацый, якая прадаецца па цэнах ад $750 да $2 тыс. у год на вузел у залежнасці ад даступных функцый.

Ужыванне
--------

 Docker на фізічным Linux-серверы
Праграмнае забеспячэнне функцыянуе ў асяроддзі Linux з ядром, якое падтрымлівае кантрольныя групы і ізаляцыю прастор імёнаў (*namespaces*). Існуюць зборкі толькі для платформаў x86-64 і ARM. Пачынаючы з версіі 1.6 2015 года магчыма выкарыстанне ў аперацыйных сістэмах сямейства Windows.

Для эканоміі прасторы захоўвання праект выкарыстоўвае файлавую сістэму Aufs з падтрымкай тэхналогіі каскадна-аб’яднанага мантавання: кантэйнеры выкарыстоўваюць выяву базавай аперацыйнай сістэмы, а змены запісваюцца ў асобную вобласць. Таксама падтрымліваецца размяшчэнне кантэйнераў у файлавай сістэме Btrfs з уключаным рэжымам капіявання пры запісе.

У склад праграмных сродкаў уваходзіць дэман — сервер кантэйнераў (запускаецца камандай docker -d), кліенцкія сродкі, якія дазваляюць з інтэрфейсу каманднага радка кіраваць выявамі і кантэйнерамі, а таксама API, якое дазваляе ў стылі REST кіраваць кантэйнерамі праграмна.

Дэман забяспечвае поўную ізаляцыю запускаемых у вузле кантэйнераў на ўзроўні файлавай сістэмы (у кожнага кантэйнера ўласная каранёвая файлавая сістэма), на ўзроўні працэсаў (працэсы маюць доступ толькі да ўласнай файлавай сістэмы кантэйнера, а рэсурсы падзеленыя сродкамі libcontainer), на ўзроўні сеткі (кожны кантэйнер мае доступ толькі да прывязанай да яго сеткавай прасторы імёнаў і адпаведным віртуальным сеткавым інтэрфейсам).

Набор кліенцкіх сродкаў дазваляе запускаць працэсы ў новых кантэйнерах (docker run), спыняць і запускаць кантэйнеры (docker stop і docker start), прыпыняць і аднаўляць працэсы ў кантэйнерах (docker pause і docker unpause). Серыя каманд дазваляе ажыццяўляць маніторынг запушчаных працэсаў (docker ps па аналогіі з ps у Unix-сістэмах, docker top па аналогіі з top і іншыя). Новыя выявы магчыма ствараць з адмысловага сцэнарнага файла (docker build, файл сцэнара носіць назву Dockerfile), магчыма запісаць усе змены, зробленыя ў кантэйнеры, у новы вобраз (docker commit). Усе каманды могуць працаваць як з docker-дэманам лакальнай сістэмы, так і з любым серверам Docker, даступным па сетцы. Акрамя таго, у інтэрфейсе каманднага радка ўбудаваны магчымасці па ўзаемадзеянні з публічным рэпазіторыям Docker Hub, у якім размешчаны папярэдне сабраныя выявы дадаткаў. Каманда docker search дазваляе ажыццявіць пошук выяў сярод размешчаных у ім, выявы можна спампоўваць у лакальную сістэму (docker pull), магчыма таксама адправіць лакальна сабраныя выявы ў Docker Hub (docker push).

Таксама Docker мае пакетны менеджар Docker Compose, які дазваляе апісваць і запускаць шматкантэйнерныя аплікацыі; канфігурацыйныя файлы для яго апісваюцца на мове YAML.

Зноскі
------

1. ↑   Праверана 19 жніўня 2016.
2. ↑   Праверана 19 жніўня 2016.
3. ↑   Праверана 19 жніўня 2016.
4. ↑   Праверана 19 жніўня 2016.
5. ↑  *Schmidt J.* Docker bekommt 15 Millionen Risikokapital — heise online, 2014. Праверана 13 студзеня 2017.<a href='https://wikidata.org/wiki/Track:Q1601295'></a>
6. ↑  *Tsai T.*  — 2019.
7. ↑  v24.0.7 — 2023. Праверана 26 кастрычніка 2023.
8. ↑
9. ↑  LICENSE Праверана 26 сакавіка 2017.
10. 1 2  *Thomas Claburn*. Docker looks big biz in the eye: It’s not you, it’s EE — Enterprise Edition. Straight out of the Red Hat playbook: Take your VM images and pay for support (англ.). *The Register* (3 сакавіка 2017). — «Docker has extended its product line by adding two E’s, for Enterprise Edition, a version of its container software tuned to the demands of businesses […] And of course there are tiers, with fees for support: Basic ($750/year); Standard ($1,500/year); and Advanced ($2,000/year)»  Архівавана з першакрыніцы 1 ліпеня 2017. Праверана 29 чэрвеня 2017.
11. ↑  *Avram, Abel*. Docker: Automated and Consistent Software Deployments (англ.). *InfoQ* (27 сакавіка 2013). Архівавана з першакрыніцы 3 мая 2014. Праверана 3 мая 2014.
12. ↑  *Darrow, Barb*. PaaS pioneer dotCloud gets new CEO in industry vet Ben Golub. Former CEO of Gluster says PaaSes need to support multiple stacks and environments — running in house, public clouds, wherever (англ.). *GigaOM* (23 ліпеня 2013). Архівавана з першакрыніцы 3 мая 2014. Праверана 3 мая 2014.
13. ↑  *Sean Michael Kerner*. Red Hat Enterprise Linux 6.5 Delivers Precision Timing. Red Hat’s new enterprise Linux release debuts with new security, virtualization and time-keeping features (англ.)(недаступная спасылка — *гісторыя* ). *eWeek* (21 лістапада 2013). Праверана 3 мая 2014.
14. ↑  *Williams, Alex*. The Matrix Of Hell And Two Open-Source Projects For The Emerging Agnostic Cloud (англ.). *TechCrunch* (28 ліпеня 2013). Архівавана з першакрыніцы 24 верасня 2016. Праверана 3 мая 2014.
15. ↑  *Frederic Lardinois*. Google’s Compute Engine Hits General Availability, Drops Instance Prices 10%, Adds 16-Core Instances & Docker Support (англ.). *TechCrunch* (19 верасня 2013). Архівавана з першакрыніцы 2 мая 2014. Праверана 3 мая 2014.
16. ↑  *Jack Clark*. Docker ported into Hadoop as benchmarks show screaming fast performance. Code committers hope unholy union of open source tech will spawn speedy gonzalez virtualization (англ.). *The Register* (2 мая 2014). — «Based on the compute node resource usage metrics during the serial VM packing test: Docker LXC CPU growth is approximately 26x lower than KVM. On this surface this indicates a 26x density potential increase from a CPU point of view using docker LXC vs a traditional hypervisor. Docker LXC memory growth is approximately 3x lower than KVM.»  Архівавана з першакрыніцы 3 мая 2014. Праверана 3 мая 2014.
17. ↑  {{{загаловак}}}. — 2015. — ISBN 978-1-78439-793-7.
18. ↑  Install Docker (англ.).  Docker Documentation. Архівавана з першакрыніцы 13 жніўня 2017. Праверана 13 жніўня 2017.
19. ↑  Blog | Docker (англ.). *www.docker.com* (23 верасня 2021). Праверана 30 жніўня 2023.
20. ↑  Репозиторий расположен по адресу registry.hub.docker.com

Спасылкі
--------

* Праект Docker на GitHub

|  |  |
| --- | --- |
| ⚙️   У сацыяльных сетках | Facebook · X |
| Фота, відэа і аўдыё | YouTube |
| Тэматычныя сайты | GitHub |