Docker

Allikas: Vikipeedia
(Ümber suunatud leheküljelt Docker (tarkvara))
Jump to navigation Jump to search
Docker Inc
Docker Inc.
Autor Solomon Hykes
Esmaväljalase 13.03.2013
Viimane väljalase 18.09.6 / 6. mai 2019
Kirjutatud keeles Go
Veebisait https://www.docker.com/

Docker on arvutiprogramm, mis teostab operatsioonisüsteemi tasemel virtualiseerimist ehk konteineriseerimist[1].

See avaldati 2013. aastal ning seda arendab Docker, Inc. Ettevõte asub San Franciscos California osariigis USA-s. Dockeri tarkvara looja on Solomon Hykes.

Dockerit kasutatakse selliste tarkvarapakettide käivitamiseks, mida nimetatakse konteineriteks (ingl container). Konteinerid on üksteisest isoleeritud ja nad komplekteerivad eraldatult vajalikke tööriistu, teeke ja konfiguratsioonifaile. Konteinerid saavad omavahel suhelda väga täpselt määratletud kanalite kaudu.[2]

Kõiki konteinerid jooksutatakse ühe operatsioonisüsteemi kerneli poolt ja on seetõttu kergemad kui virtuaalmasinad. Konteinereid luuakse tõmmisfailidest, mis on sageli loodud avalikest hoidlatest alla laaditud standardtõmmiste ühendamise ja muutmise teel.

Docker implementeerib kõrgetasemelist API-t, et pakkuda kergekaalulisi konteinereid, mis töötavad eraldi protsessides. Docker on tööriist, mis suudab rakendust ja selle sõltuvusi pakendada virtuaalses konteineris, mida saab käitada mis tahes Linuxi serveris. See aitab kaasa paindlikkusele ja kaasaskantavusele, võimaldades rakendusel käitamise võimalust kas kontori ruumides, avalikus pilves, privaatses pilves jne.

Konteinerite kasutamine võib lihtsustada jaotatud süsteemide loomist, võimaldades mitme rakenduse, töötaja ülesande või muude protsesside käitamist iseseisvalt ühes füüsilises masinas või mitmes virtuaalses masinas.

Ajalugu[muuda | muuda lähteteksti]

Solomon Hykes algatas Dockeri Prantsusmaal siseprojektina ettevõttes dotCloud koos teiste arendajate Andrea Luzzardi ja Francois-Xavier Bourlet'ga. Tarkvara sai avalikuks Santa Claras toimunud PyConil 2013. aastal.[3]

Docker avaldati avatud lähtekoodina märtsis 2013.[4]

Komponendid[muuda | muuda lähteteksti]

Docker kasutab klient-server-arhitektuuri. Dockeri klient suhtleb Dockeri deemoniga (ingl daemon), mis ehitab, jooksutab ning jagab Dockeri konteinereid. Dockeri klient ja deemon suhtlevad üle REST-API, UNIXi soklite või võrguliideste. Klient-server-rakenduse nimeks on Docker Engine.[5]

Dockeri register hoiustab Dockeri pilte, mis sisaldavad juhiseid konteineri loomiseks. Sageli põhineb pilt mõnel teisel pildil, kuid sisaldab lisaks täiendavat funktsionaalsust. Näiteks võib luua pildi, mis põhineb Ubuntu distributsioonil ning koosneb veel täiendavalt Apache'i veebiserverist ja konfiguratsiooniseadetest. Pildi ehitamiseks tuleb luua Dockerfile, mis kirjeldab vajalikke samme. Dockeri konteiner on jooksutatav versioon pildist. Seda saab luua, peatada, käivitada, kustutada või muuta kasutades Dockeri API-t või CLI-d.[6]

Tehnoloogia[muuda | muuda lähteteksti]

Docker on välja töötatud peamiselt Linuxi operatsioonisüsteemi jaoks, kus ta kasutab Linuxi ressursi isoleerimisfunktsioone, nagu kontrollgrupid (cgroups) ja kerneli nimeruume, ning ühisfunktsionaalset failisüsteemi, nagu OverlayFS, et võimaldada sõltumatutel konteineritel töötada ühel Linuxi eksemplaril (ingl instance), vältides virtuaalsete masinate käivitamise ja hooldamise kulusid.

Docker võimaldab jooksutada rakendusi isoleeritud keskkonnas, mida nimetatakse konteineriks. Konteinerid on kergekaalulised, sest need ei vaja eraldiseisvat kernelit, vaid kasutavad hostsüsteemi kernelit.[7]

Docker on kirjutatud keeles Go ning kasutab mitut Linuxi kerneli funktsiooni.[8]

Üheks selliseks funktsiooniks on nimeruumid, mis võimaldavad isoleerida konteineri erinevaid kihte.[9] Docker Engine kasutab järgnevaid nimeruume Linuxil:

  • pid – protsesside isoleerimine
  • net – võrguliideste haldamine
  • ipc – IPC ressursside haldamine (IPC – InterProcess Communication)
  • mnt – failisüsteemi mount-punktide ehk liitepunktide haldamine
  • uts – kerneli ja versiooniidentifikaatorite isoleerimine

Teine Linuxi funktsionaalsus on kontrollgrupid (cgroups). Kontrollgrupp piirab rakendusele kindla hulga ressursse.[10] Kontrollgrupid võimaldavad Docker Engine’il jagada vabu riistvara ressursse konteineritele ning vajadusel seada piire.[11]

Docker Engine kasutab UnionFS-failisüsteemi, mille tööpõhimõtteks on erinevate kihtide lisamine teineteise peale. Kihid tekivad copy-on-write (CoW) strateegia tõttu, mis tähendab seda, et alumisi kihte ei muudeta, vaid muudetud failid pannakse uuele kihile. Docker Engine kasutab erinevaid UnionFS-i variante, nende seas AUFS, btrfs, vfs ja DeviceMapper.[12]

Docker Engine kombineerib nimeruumid, kontrollgrupid ja UnionFS-i kokku konteinerivormingusse.[13]

Alatest versioonist 0.9 sisaldab Docker teeki libcontainer, võimaldades sellega omal viisil otseselt kasutada Linuxi kerneli pakutavaid virtualiseerimisrajatisi (virtualization facilities). Ehitades Linuxi kerneli virtualiseermisrajatiste peale (peamiselt kontrollgrupp ja nimeruum), ei nõua Dockeri konteiner, erinevalt virtuaalsest masinast, eraldiseisvat operatsioonisüsteemi. Selle asemel tugineb see tuuma funktsionaalsusele ning kasutab CPU ja mälu isoleerimist ja eraldiseisvaid nimeruume, et isoleerida rakenduse vaade operatsioonisüsteemist.[14]

Linuxi kerneli toetus nimeruumides suhtes võimaldab isoleerida rakenduse vaate töökeskkonnast (operating environment), sealhulgas protsessi puudest, võrgust, privaatsetest kasutajatunnustest ja paigaldatud failisüsteemidest, samal ajal kui kernel kontrollgrupid pakuvad ressursse, mis piiravad mälu ja protsessorit.

Tööriistad[muuda | muuda lähteteksti]

  • Docker Compose on loodud mitmest konteinerist koosnevate rakenduste jooksutamiseks. Compose'i kasutamiseks on vaja luua YAML-fail, kus on võimalik konfigureerida oma rakenduse teenused. Compose'i faili käivitamisel luuakse ja käivitatakse kõik vajalikud konteinerid.[15]
  • Docker Swarm on tööriist, millega saab mitu masinat klasterdada üheks parveks. Selle tulemuseks on näiliselt tavaline docker engine, kuid tegelikult paigutab swarm manager[16] konteinereid üle klastri. Parve lisatud masinad võivad olla nii füüsilised kui ka virtuaalsed. Parves olevaid masinad nimetatakse sõlmedeks [17]

Vaata ka[muuda | muuda lähteteksti]

Viited[muuda | muuda lähteteksti]

  1. "Docker: A Favourite in the DevOps World".
  2. "What is Docker?" Red Hat.
  3. Avram, Abel (27.03.2013). "Docker: Automated and Consistent Software Deployments". InfoQ.
  4. Jordan Novet. "Docker, the startup that kicked off the container revolution, raises $95M". Venture Beat, 14. aprill, 2015. Kasutatud 7. detsember 2015.
  5. Docker.com. "Docker overview".
  6. "Docker: About images, containers, and storage drivers". Kasutatud 7. detsember 2018.
  7. Docker.com. "Docker overview". Kasutatud 7. detsember 2018.
  8. Jérôme Petazzoni. "Docker and Go: why did we decide to write Docker in Go?". 7. november 2013. Kasutatud 7. detsember 2018.
  9. "Docker: Introduction to User Namespaces in Docker Engine". Kasutatud 7. detsember 2018.
  10. "cgroups". Linux Programmer's Manual. Kasutatud 7. detsember 2018.
  11. "Understanding the Docker Internals". Kasutatud 7. detsember 2018.
  12. "Drooling Over Docker #2 – Understanding Union File Systems". Kasutatud 7. detsember 2018.
  13. "Docker overview - Container format". Kasutatud 7. detsember 2018.
  14. What is Docker & Docker Containers, Images, etc?
  15. Docker docs. "Overview of Docker Compose".
  16. Docker. "manage – Create a Swarm manager".
  17. Docker. "Understanding Swarm clusters".