Docker | |
---|---|
![]() | |
Originalni autor(i) | Solomon Hykes |
Centralna arhiva | github |
Programski jezik | Go |
Operativni sistem | Linux, Windows, macOS |
Platforma | x86-64, ARM, s390x, ppc64le |
Vrsta | Virtualizacija na nivou OS-a |
Veb-sajt | https://www.docker.com,%20https://www.docker.com/ja-jp/ |
Docker je alat dizajniran tako da olakšava razvoj, implementaciju i pokretanje aplikacija koristeći kontejnere.[1] Softver koji sadrži kontejnere naziva se Docker Engine.[2] Prvi put se pojavio 2013. godine i razvija ga kompanija Docker, Inc.[3] Usluga ima besplatne i plaćene nivoe.
Kontejneri su izolovani jedan od drugog i pakuju sopstveni softver, biblioteke i konfiguracione fajlove; oni mogu međusobno komunicirati putem tačno definisanih kanala.[4] Svi kontejneri su upravljani kernelom operativnog sistema i stoga su lakši od virtualnih mašina. Kontejneri se stvaraju iz slika koje određuju njihov precizan sadržaj.[2]
Docker se razvija prvenstveno za Linux, gdje koristi mogućnosti izolacije resursa Linux kernela kao što su cgroups i kernel namespaces, te datotečni sistem sposoban za union-mount kao što su OverlayFS i drugi [6] kako bi se omogućio pokretanje nezavisnih kontejnera unutar jedne Linux instance, npr. izbjegavajući opterećenje pokretanja i održavanja virtuelnih mašina (VM).[7] Na ovaj način se uglavnom[8] izolira pogled aplikacije na okruženje operativnog sistema. Od verzije 0.9, Docker uključuje libcontainer biblioteke kao svoj vlastiti način za direktno korištenje virtualizacijskih mogućnosti koje pruža Linux kernel, kao dodatak korištenju apstrakcijskih virtualizacijskih interfejsa kao što su libvirt, LXC i systemd-nspawn.[9][10][5]
Nadograđujući se na mogućnosti koje pruža Linux kernel (prvenstveno cgroups i namespaces), Docker kontejner, za razliku od virtualne mašine, ne zahtijeva ili uključuje poseban operativni sistem.[11] Umjesto toga, oslanja se na funkcionalnost kernela i koristi izolaciju resursa za CPU i memoriju,[12] i odvojene namespace kako bi izolirala pogled aplikacije na operativni sistem. Docker pristupa virtualizacijskim mogućnostima Linux kernela ili direktno koristeći libcontainer biblioteke, koja je dostupna od verzije Docker 0.9, ili indirektno preko libvirt , LXC (Linux kontejneri) ili systemd-nspawn.[5][13]
Zbog toga što Docket kontejeneri zauzimaju malo prostora, jedan server ili virtuelna mašina može istovremeno pokrenuti nekoliko kontejnera. Analiza iz 2016. otkrila je da tipičan slučaj upotrebe Docker-a uključuje pet kontejnera po serveru, ali da mnoge organizacije pokreću 10 ili više.[14]