Пређи на садржај

Docker

С Википедије, слободне енциклопедије
Docker
Оригинални аутор(и)Соломон Хајкс
Програмер(и)Docker, Inc.
Прво издање20. март 2013.; пре 12 година (2013-03-20)[1]
Стабилно издање
29.0.2 Уреди ставку / 17 новембар 2025
Репозиторијум Уреди на Википодацима
Написан уGo[2]
Оперативни системЛинукс, Виндоус, macOS
Платформаx86-64, ARM, s390x, ppc64le
ТипВиртуелизација на нивоу оперативног система
Лиценца
Веб-сајтdocker.com
Претходни логотип

Docker (транскр. Докер) је скуп производа платформа као услуга (PaaS) који користе виртуелизацију на нивоу оперативног система за испоруку софтвера у пакетима који се називају контејнери.[4] Услуга има и бесплатне и премијум нивое. Софтвер који хостује контејнере назива се Docker Engine.[5] Први пут је објављен 2013. године и развија га компанија Docker, Inc..[6]

Докер је алат који се користи за аутоматизацију примене апликација у лаким контејнерима, како би апликације могле ефикасно да раде у различитим окружењима, у изолацији.

Позадина

[уреди | уреди извор]

Контејнери су међусобно изоловани и садрже сопствени софтвер, библиотеке и конфигурационе датотеке; могу међусобно комуницирати путем добро дефинисаних канала.[7] Пошто сви контејнери деле услуге једног језгра оперативног система, они користе мање ресурса него виртуелне машине.[5]

Функционисање

[уреди | уреди извор]
Docker може користити различите интерфејсе за приступ функцијама виртуелизације Линукс језгра.[8]

Docker може да упакује апликацију и њене зависности у виртуелни контејнер који се може покренути на било ком Линукс, Виндоус или macOS рачунару. Ово омогућава да се апликација покреће на различитим локацијама, као што су локално, у јавном (види децентрализовано рачунарство, дистрибуирано рачунарство и рачунарство у облаку) или приватном облаку.[9] Када ради на Линуксу, Docker користи функције изолације ресурса Линукс језгра (као што су cgroups и простори имена језгра) и систем датотека са могућношћу унион монтирања (као што је OverlayFS)[10] како би омогућио контејнерима да раде унутар једне инстанце Линукса, избегавајући преоптерећење покретања и одржавања виртуелних машина. Docker на macOS-у користи Линукс виртуелну машину за покретање контејнера.[11]

Пошто су Docker контејнери лагани, један сервер или виртуелна машина може истовремено покренути неколико контејнера.[12] Анализа из 2018. године показала је да типичан случај употребе Докера укључује покретање осам контејнера по хосту, те да четвртина анализираних организација покреће 18 или више по хосту.[13] Такође се може инсталирати на рачунар на једној плочи као што је Raspberry Pi.[14] Подршка Линукс језгра за просторе имена углавном[15] изолује поглед апликације на оперативно окружење, укључујући стабла процеса, мрежу, корисничке ID-еве и монтиране системе датотека, док cgroups језгра обезбеђују ограничавање ресурса за меморију и CPU.[16] Од верзије 0.9, Docker укључује сопствену компоненту (названу libcontainer) за коришћење функција виртуелизације које директно пружа Линукс језгро, поред коришћења апстрахованих интерфејса за виртуелизацију путем libvirt, LXC-а и systemd-nspawn.[17][8][9][18]

Docker имплементира API високог нивоа како би обезбедио лагане контејнере који покрећу процесе у изолацији.[19]

Модел лиценцирања

[уреди | уреди извор]
  • Docker Engine је лиценциран под Апачи лиценцом 2.0. Docker Desktop дистрибуира неке компоненте које су лиценциране под ГНУ-овом општом јавном лиценцом. Docker Desktop није бесплатан за велика предузећа.[20]
  • Датотеке Dockerfile могу саме по себи бити лиценциране под лиценцом отвореног кода. Обим такве изјаве о лиценци односи се само на Dockerfile, а не на слику контејнера.

Компоненте

[уреди | уреди извор]

Софтверска понуда ове услуге састоји се од три компоненте:

  • Софтвер: Docker демон, назван dockerd, јесте постојани процес који управља Docker контејнерима и објектима контејнера. Демон ослушкује захтеве послате путем API-ја Docker Engine-а.[21][22] Docker клијентски програм, назван docker, пружа интерфејс командне линије (CLI) који омогућава корисницима интеракцију са Docker демонима.[21][23]
  • Објекти: Docker објекти су различити ентитети који се користе за састављање апликације у Докеру. Главне класе Docker објеката су слике, контејнери и сервиси.[21]
    • Docker контејнер је стандардизовано, енкапсулирано окружење које покреће апликације.[24] Контејнером се управља помоћу Docker API-ја или CLI-ја.[21]
    • Docker слика је шаблон само за читање који се користи за изградњу контејнера. Слике се користе за складиштење и испоруку апликација.[21]
    • Docker сервис омогућава скалирање контејнере преко више Docker демона. Резултат је познат као swarm (рој), скуп демона који сарађују и комуницирају путем Docker API-ја.[21]
  • Регистри: Docker регистар је спремиште за Docker слике. Docker клијенти се повезују са регистрима како би преузели („pull”) слике за употребу или отпремили („push”) слике које су изградили. Регистри могу бити јавни или приватни. Главни јавни регистар је Docker Hub. Docker Hub је подразумевани регистар где Docker тражи слике.[21][25] Docker регистри такође омогућавају креирање обавештења на основу догађаја.[26]

Dockerfile (пример)

[уреди | уреди извор]

Dockerfile је текстуална датотека која обично специфицира неколико аспеката Docker контејнера: Линукс дистрибуцију, команде за инсталацију извршног окружења програмског језика и изворни код апликације.

Пример Dockerfile-а:[27]

ARG CODE_VERSION=latest
FROM ubuntu:${CODE_VERSION}
COPY ./examplefile.txt /examplefile.txt
ENV MY_ENV_VARIABLE="example_value"
RUN apt-get update

# Монтирај директоријум из Docker волумена
# Напомена: Ово се обично наводи у команди 'docker run'.
VOLUME ["/myvolume"]

# Изложи порт (22 за SSH)
EXPOSE 22
  • Docker Compose је алат за дефинисање и покретање вишеконтејнерских Docker апликација.[28] Користи YAML датотеке за конфигурисање сервиса апликације и извршава процес креирања и покретања свих контејнера једном командом. CLI услужни програм docker compose омогућава корисницима да извршавају команде на више контејнера одједном; на пример, изградња слика, скалирање контејнера, покретање заустављених контејнера и друго.[29] Команде везане за манипулацију сликама или интерактивне опције за корисника нису релевантне у Docker Compose-у јер се односе на један контејнер.[30] Датотека docker-compose.yml користи се за дефинисање сервиса апликације и укључује различите опције конфигурације. На пример, опција build дефинише опције конфигурације као што је путања до Dockerfile-а, опција command омогућава замену подразумеваних Docker команди, и друго.[31] Прва јавна бета верзија Docker Compose-а (верзија 0.0.1) објављена је 21. децембра 2013.[32] Прва верзија спремна за продукцију (1.0) постала је доступна 16. октобра 2014.[33]
  • Docker Swarm пружа нативну функционалност кластеризације за Docker контејнере, која претвара групу Docker мотора у један виртуелни Docker мотор.[34] У Докеру 1.12 и новијим верзијама, Swarm режим је интегрисан са Docker Engine-ом.[35] CLI[36] услужни програм docker swarm омогућава корисницима покретање Swarm контејнера, креирање токена за откривање, листирање чворова у кластеру и друго.[37] CLI услужни програм docker node омогућава корисницима да покрећу различите команде за управљање чворовима у роју, на пример, листирање чворова у роју, ажурирање чворова и уклањање чворова из роја.[38] Docker управља ројевима користећи Raft алгоритам консензуса. Према Raft-у, да би се ажурирање извршило, већина чворова у роју мора се сложити са ажурирањем.[39][40] Поред docker swarm CLI-ја, docker stack је алат дизајниран за управљање Swarm сервисима са већом флексибилношћу. Може користити конфигурациону датотеку веома сличну docker-compose.yml, са неколико нијанси. Коришћење docker stack уместо docker compose нуди неколико предности, као што је могућност управљања Swarm кластером на више машина или способност рада са docker secret у комбинацији са docker context, функцијом која омогућава извршавање Docker команди на удаљеном хосту, чиме се омогућава даљинско управљање контејнерима.
  • Docker Volume олакшава независно очување података, омогућавајући да подаци остану чак и након што се контејнер избрише или поново креира.[41]

Историја

[уреди | уреди извор]

Компанију dotCloud Inc. основали су Камел Фунади, Соломон Хајкс и Себастјен Пал[42] током летње групе стартап инкубатора Y Combinator 2010. године, а покренута је 2011. Преименована је у Docker Inc. 2013. године.[43] Стартап је такође био један од 12 стартапова у првој групи Founder's Den-а.[44] Хајкс је покренуо пројекат Docker у Француској као интерни пројекат у оквиру компаније dotCloud, компаније за платформу као услугу.[45]

Docker је дебитовао у јавности у Санта Клари на PyCon-у 2013. године.[46] Објављен је као отворени код у марту 2013.[19] У то време, користио је LXC као своје подразумевано извршно окружење. Годину дана касније, са издањем верзије 0.9, Докер је заменио LXC сопственом компонентом, libcontainer, која је написана у програмском језику Go.[17][47]

Године 2017, Docker је креирао [[]] [Moby project] за отворено истраживање и развој.[48]

Усвајање

[уреди | уреди извор]
  • 19. септембар 2013: Red Hat и Docker су најавили сарадњу у вези са Федором, Red Hat Enterprise Linux-ом (RHEL) и OpenShift-ом.[49]
  • 15. октобар 2014: Мајкрософт је најавио интеграцију Docker мотора у Windows Server, као и нативну подршку за улогу Docker клијента у Виндоусу.[50][51]
  • Новембар 2014: Најављене су услуге Докера за Amazon Elastic Compute Cloud (EC2).[52]
  • 10. новембар 2014: Docker је најавио партнерство са компанијом Stratoscale.[53]
  • 4. децембар 2014: IBM је најавио стратешко партнерство са Докером које омогућава Докеру да се ближе интегрише са IBM Cloud-ом.[54]
  • 22. јун 2015: Docker и неколико других компанија најавили су да раде на новом стандарду за софтверске контејнере који је независан од произвођача и оперативног система.[55][56]
  • Децембар 2015: Oracle Cloud је додао подршку за Docker контејнере након аквизиције компаније StackEngine, стартапа за Docker контејнере.[57]
  • Април 2016: Windocks, независни произвођач софтвера, објавио је порт Докеровог пројекта отвореног кода за Виндоус, подржавајући Windows Server 2012 R2 и Server 2016, са свим издањима SQL Server-а 2008 и новијим.[58]
  • Мај 2016: Анализа је показала да су следеће организације главни доприносиоци Докеру: Docker тим, Cisco, Google, Huawei, IBM, Мајкрософт и Red Hat.[59]
  • 8. јун 2016: Мајкрософт је најавио да се Docker сада може нативно користити на Виндоусу 10.[60]
  • Јануар 2017: Анализа помена на LinkedIn профилима показала је да је присуство Докера порасло за 160% у 2016. години.[61]
  • 6. мај 2019: Мајкрософт је најавио другу верзију Помоћног система Виндоуса за Линукс (WSL). Docker, Inc. је најавио да је почео да ради на верзији Докера за Виндоус која ће радити на WSL 2.[62] То је посебно значило да Docker може да ради на Виндоусу 10 Home (раније је био ограничен на Windows Pro и Enterprise јер је користио Hyper-V).
  • Август 2020: Мајкрософт је најавио пренос WSL2 на Виндоус 10 верзије 1903 и 1909 (раније је WSL2 био доступан само на верзији 2004),[63] а програмери Докера најавили су доступност Докера за ове платформе.[64]
  • Август 2021: Docker Desktop за Виндоус и macOS више није био доступан бесплатно за пословне кориснике. Docker је укинуо бесплатно коришћење компоненте Docker Desktop за веће пословне кориснике и заменио свој бесплатни план личним планом. Docker Engine на Линукс дистрибуцијама остао је непромењен.[65]
  • Децембар 2023: Docker је купио AtomicJar како би проширио своје могућности тестирања.[66]

Референце

[уреди | уреди извор]
  1. ^ Barbier, Julien (9. 6. 2014). „Стигао је: Docker 1.0”. Docker. Docker, Inc. Приступљено 30. 9. 2019. 
  2. ^ „Docker изворни код”. docker/distribution repo. Docker, Inc. 12. 10. 2015. Приступљено 24. 10. 2015 — преко GitHub. 
  3. ^ „Уговор о лиценцирању за Docker Desktop”. 11. 9. 2024. 
  4. ^ O'Gara, Maureen (26. 7. 2013). „Бен Голуб, који је продао Gluster Red Hat-у, сада води dotCloud”. SYS-CON Media. Архивирано из оригинала 13. 9. 2019. г. 
  5. ^ а б „Шта је контејнер?”. docker.com. Docker, Inc. Приступљено 13. 5. 2019. 
  6. ^ Ratan, Vivek (8. 2. 2017). „Docker: Омиљен у свету DevOps-а”. Open Source For U. Приступљено 14. 6. 2017. 
  7. ^ „Користите контејнере за изградњу, дељење и покретање ваших апликација”. docker.com. 
  8. ^ а б „Docker 0.9: Представљање извршних драјвера и libcontainer-а”. Docker Blog. Docker, Inc. 10. 3. 2014. Приступљено 20. 1. 2015. 
  9. ^ а б Noyes, Katherine (1. 8. 2013). „Docker: 'Транспортни контејнер' за Линукс код”. Linux.com. Архивирано из оригинала 8. 8. 2013. г. Приступљено 9. 8. 2013. 
  10. ^ „Документација за избор драјвера за складиштење”. Docker documentation. Архивирано из оригинала 6. 12. 2016. г. Приступљено 7. 12. 2016. 
  11. ^ „Почните са Докером за Mac”. docker.com. Docker, Inc. Приступљено 27. 9. 2018. 
  12. ^ K., Chris (14. 1. 2019). „Лагани Виндоус контејнери: Коришћење изолације процеса Докера у Виндоусу 10”. Poweruser. Приступљено 2. 8. 2019. „„лаганији” стварни контејнери (путем изолације процеса), где се контејнеризовани процеси извршавају директно на хост систему — сви процеси на хосту и у контејнерима деле исто Виндоус језгро. Ово је слично начину на који контејнери раде на Линуксу. 
  13. ^ „8 изненађујућих чињеница о стварном усвајању Докера”. Datadog. јун 2018. Приступљено 4. 9. 2019. 
  14. ^ Gupta, Devender (13. 10. 2022). „Како инсталирати Docker[[Категорија:Чланци који садрже текст на језику — енглески]] на Raspberry Pi”. Gizmoxo (на језику: енглески). Архивирано из оригинала 16. 07. 2023. г. Приступљено 15. 10. 2022.  Сукоб URL—викивеза (помоћ)
  15. ^ Walsh, Dan (15. 9. 2014). „Још један разлог зашто контејнери не садрже: привесци кључева језгра”. projectatomic.io. Приступљено 13. 4. 2015. 
  16. ^ „Ограничите ресурсе контејнера”. Docker Documentation. Приступљено 7. 3. 2018. 
  17. ^ а б Vaughan-Nichols, Steven J. (11. 6. 2014). „Docker libcontainer уједињује моћи Линукс контејнера”. ZDNet. Приступљено 30. 7. 2014. 
  18. ^ „libcontainer – референтна имплементација за контејнере”. docker/libcontainer repo. Docker, Inc. Приступљено 30. 7. 2014 — преко GitHub. 
  19. ^ а б Avram, Abel (27. 3. 2013). „Docker: Аутоматизоване и доследне примене софтвера”. InfoQ. Приступљено 9. 8. 2013. 
  20. ^ „Get Docker”. 11. 9. 2024. 
  21. ^ а б в г д ђ е „Преглед Докера”. Docker Documentation. Docker, Inc. Приступљено 26. 2. 2018. 
  22. ^ „dockerd”. Docker Documentation. Docker, Inc. Приступљено 26. 2. 2018. 
  23. ^ „Коришћење командне линије Докера”. Docker Documentation. Docker, Inc. Приступљено 26. 2. 2018. 
  24. ^ „Екосистем Докера: Увод у уобичајене компоненте”. www.digitalocean.com. Приступљено 26. 2. 2018. 
  25. ^ „О регистру”. Docker Documentation. Docker, Inc. Приступљено 26. 2. 2018. 
  26. ^ „Рад са обавештењима”. 2. 3. 2019. 
  27. ^ „Dockerfile reference”. Docker Documentation (на језику: енглески). 14. 11. 2023. Приступљено 30. 11. 2023. 
  28. ^ „Преглед Docker Compose-а”. Docker Documentation. Docker, Inc. Приступљено 6. 7. 2017. 
  29. ^ „Референца командне линије за Compose”. Docker Documentation. Docker, Inc. Приступљено 28. 2. 2018. 
  30. ^ „Оркестрирајте контејнере за развој помоћу Docker Compose-а”. via @codeship. 27. 5. 2015. Приступљено 28. 2. 2018. 
  31. ^ „Референца за Compose датотеку верзије 3”. Docker Documentation. Docker, Inc. Приступљено 28. 2. 2018. 
  32. ^ Firshman, Ben (21. 12. 2013). „Издање 0.0.1”. docker/compose. Docker, Inc. — преко GitHub. 
  33. ^ Prasad, Aanand (16. 10. 2014). „Издање 1.0.0”. docker/compose. Docker, Inc. — преко GitHub. 
  34. ^ „8 алата за оркестрацију контејнера отвореног кода које треба знати”. Linux.com. 12. 4. 2017. Приступљено 6. 7. 2017. 
  35. ^ „Docker Swarm”. Docker Documentation. Docker, Inc. Приступљено 6. 7. 2017. 
  36. ^ „Docker swarm”. 4. 6. 2021. 
  37. ^ „Референца командне линије за Swarm”. Docker Documentation. Docker, Inc. Приступљено 28. 2. 2018. 
  38. ^ „docker node”. Docker Documentation. Приступљено 28. 2. 2018. 
  39. ^ „Docker Swarm 101”. aquasec.com. Приступљено 28. 2. 2018. 
  40. ^ „Raft алгоритам консензуса”. raft.github.io. Приступљено 28. 2. 2018. 
  41. ^ „Docker Desktop & Docker водичи”. Docker Guide (на језику: енглески). 25. 4. 2021. Архивирано из оригинала 25. 4. 2021. г. Приступљено 25. 4. 2021. 
  42. ^ Hykes, Solomon (28. 3. 2018). „Au Revoir”. docker.com. Архивирано из оригинала 12. 1. 2021. г. Приступљено 23. 1. 2021. 
  43. ^ „О платформи dotCloud”. dotCloud. Архивирано из оригинала 2. 7. 2014. г. Приступљено 23. 6. 2019. 
  44. ^ Seigler, MG (10. 1. 2011). „Founders Den: Приватни клуб за предузетнике отвара се у Сан Франциску”. TechCrunch. Архивирано из оригинала 29. 3. 2016. г. Приступљено 2. 2. 2021. 
  45. ^ „Један дом за све ваше апликације”. dotcloud.com. Архивирано из оригинала 17. 5. 2014. г. Приступљено 8. 5. 2014. 
  46. ^ „Будућност Линукс контејнера”. DotCloud Channel. 21. 3. 2013. Приступљено 13. 7. 2018 — преко YouTube. 
  47. ^ Swan, Chris (13. 3. 2014). „Докер одбацује LXC као подразумевано извршно окружење”. InfoQ. Приступљено 20. 1. 2015. 
  48. ^ „Демистификација односа између Moby-ја и Докера – Добродошли у Collabnix”. 6. 5. 2017. 
  49. ^ „DotCloud се окреће и остварује велики успех са Докером, клауд сервисом који је сада део Red Hat OpenShift-а”. TechCrunch. 19. 9. 2013. Приступљено 20. 1. 2014. 
  50. ^ Foley, Mary Jo (15. 10. 2014). „Подршка за Докер контејнере стиже у следеће издање Мајкрософтовог Windows Server-а”. ZDNet. Приступљено 16. 10. 2014. 
  51. ^ Guthrie, Scott (15. 10. 2014). „Докер и Мајкрософт: Интеграција Докера са Windows Server-ом и Microsoft Azure-ом”. ScottGu's Blog. Microsoft. Приступљено 12. 1. 2015. 
  52. ^ Barr, Jeff (13. 11. 2014). „Amazon EC2 Container Service (ECS) – Управљање контејнерима за AWS Cloud”. Amazon Web Services Blog. Приступљено 29. 4. 2017. 
  53. ^ Rath, John (10. 11. 2014). „Stratoscale прикупља 32 милиона долара за изградњу OpenStack облака са подршком за Докер на робним серверима”. Приступљено 3. 1. 2016. 
  54. ^ „IBM и Докер најављују стратешко партнерство за испоруку пословних апликација у облаку и локално”. IBM. 4. 12. 2014. Архивирано из оригинала 10. 1. 2015. г. Приступљено 20. 4. 2015. 
  55. ^ Lardinois, Frederic (22. 6. 2015). „Docker, CoreOS, Google, Microsoft, Amazon и други се удружују да развију заједнички стандард за контејнере”. TechCrunch. Приступљено 8. 8. 2015. 
  56. ^ Siluk, Shirley (22. 6. 2015). „Докер и технолошки гиганти удружују се на пројекту Open Container”. cio-today.com. Архивирано из оригинала 23. 9. 2015. г. Приступљено 8. 8. 2015. 
  57. ^ McLaughlin, Kevin (22. 12. 2015). „Oracle Acquires Docker Container Startup StackEngine, Plans Austin-Based Cloud Computing Center”. CRN. Приступљено 13. 1. 2022. 
  58. ^ Yegulalp, Serdar (4. 4. 2016). „Windocks ради оно што Докер и Мајкрософт не могу”. InfoWorld. Приступљено 27. 10. 2018. 
  59. ^ „Docker – Ажурирана статистика пројекта”. GitHub Gist. Приступљено 22. 8. 2016. 
  60. ^ Sarkar, Dona (8. 6. 2016). „Најава Windows 10 Insider Preview Build 14361”. Windows Blogs. Microsoft. Приступљено 19. 6. 2016. 
  61. ^ Mullany, Michael. „Анализа замаха Докера 2016”. LinkedIn Pulse. Приступљено 5. 1. 2017. 
  62. ^ Vaughan-Nichols, Steven (18. 6. 2019). „Докер прихвата Windows Subsystem for Linux 2”. ZDNet. CBS Interactive. 
  63. ^ „Подршка за WSL 2 стиже на Виндоус 10 верзије 1903 и 1909”. Windows Command Line (на језику: енглески). 20. 8. 2020. Приступљено 21. 8. 2020. 
  64. ^ „Docker Desktop & WSL 2 - Ажурирање о преносу”. Docker Blog (на језику: енглески). 20. 8. 2020. Приступљено 21. 8. 2020. 
  65. ^ Carey, Scott (31. 8. 2021). „Docker Desktop is no longer free for enterprise users”. InfoWorld (на језику: енглески). Приступљено 18. 10. 2021. 
  66. ^ Miller, Ron (11. 12. 2023). „Docker acquires AtomicJar, a testing startup that raised $25M in January”. TechCrunch (на језику: енглески). Приступљено 13. 12. 2023.