Pratite nas

Pozdrav, koji sadržaj vas zanima?

Softver i aplikacije

Što je Docker?

što je docker

Ako se bavite web programiranjem, upravljate stranicama ili web serverima, vjerojatno ste čuli za pojam Docker i pojam kontejner. U ovom članku ćemo napisati što je Docker, i koja je veza između dva spomenuta pojma.

Docker je danas jako popularno kontejnersko rješenje, posebno za razvojne timove koji svakodnevno razvijaju nove aplikacije, održavaju postojeće i puštaju ih na korištenje. Sve više i više kompanija prelazi na ovaj model virtualizacije, jer je Docker zapravo jedan pristup virtualizaciji. U tekstu ćemo spomenuti razliku između klasične virtualne mašine i dokera, pa nastavite čitati.

Prvo da napišemo – što je Docker?

Docker je open-source projekt, kontejnerska platforma koja se koristi za razvoj aplikacija, upravljanje i puštanje u produkciju. Za rad koristi virtualna okruženja koja zovemo kontejneri. Dakle, jedan docker može imati više kontejnera, od kojih svaki radi zasebno i svaki od njih je neovisan o drugom.

što je docker
Docker – foto izvor

Docker se koristi kao softversko okruženje za razvoj aplikacija i kasniju distribuciju. Prednosti ovog modela su višestruke, ali najznačajnija prednost je kompatibilnost aplikacije. U praksi to znači da će, aplikacija koja je razvijena u kontejneru, raditi bez problema na bilo kojem dokeru, bez obzira problema s kompatibilnošću. Zapakirana aplikacija u jednom tako izoliranom okruženju (kontejneru) lakše se razvija, održava i koristi.

Obzirom da Docker koristi virtualizaciju za kreiranje kontejnera u kojima će se nalaziti aplikacije, koncept jako podsjeća na virtualnu mašinu. Iako oba pristupa daju izolirano radno okruženje, postoje bitne razlike u načinu na koji rade. Očita razlika je ta da Docker uzima manje resursa, brži je i lakši za sustav. Zašto je tako? Saznajte u nastavku teksta.

Što su kontejneri?

Kontejneri su virtualno okruženje u kojem se zapravo nalaze aplikacije, točnije kompletno okruženje potrebno za izvođenje aplikacija. Svaki kontejner predstavlja paket softvera koji sadrži kod, sistemske alate, i sve konfiguracijske datoteke potrebne za izvođenje aplikacije. Oni su neovisni i izolirani od domaćina (hosta) i drugih instanci na hostu.

kontejneri
kontejneri – ilustracija

Kontejneri se baziraju na Docker paketu (images). Da bi izgradili kontejner, pokrenut ćete image na Docker engine. Kako su ovo dva najčešća pojma, kada pričamo o Dockeru, važno je razumjeti razliku između Docker images i Docker containers.

Isti hardver može posluživati više kontejnera, iz razloga što se kontejner virtualizacija odvija na aplikacijskoj razini. To znači, kontejneri dijele OS kernel sa hostom, te irtualiziraju OS iznad toga. Sve vodi ka boljoj iskoristivosti resursa i lakšem održavanju virtualnog okruženja.

Za što se koristi Docker?

Kada smo napisali što je Docker, što kontejnera i koje su razlike u usporedbi sa klasičnom virtualnom mašinom, napisat ćemo za što se koristi docker i kontejner.

Docker se koristi za:

  • Pokretanje više projekata s manje resursa
  • Izoliranje i segregacija aplikacija
  • Standardiziranje okruženja da bi se osigurala konzistentnost kroz sve razvojne i produkcijske etape
  • Razvoj „prijenosnih“ projekata koji se mogu pokrenuti na multi-cloud platformama

Kao dodatne stavke možemo spomenuti:

  • Docker je povoljnija alternativa virtualnim mašinama
  • Kontrola verzije za aplikacije

Kratka povijest Dockera

Prije nego završimo s temom što je Docker, napisat ćemo u par rečenica kratku povijest razvoja ove ideje.

Docker je predstavljen kao projekt otvorenog koda 2013.godine, na PyCon. Prije nego je fokus otišao na kontejnere, projekt je startao kao platforma – Service solution – pod nazivom DotCloud 2018.godine. Zbog velikog interesa developera, i potrebe za novim slojem – kontejneri – platforma se oblikovala u ovo što danas opisujemo. Od tada, docker se profilirao kao softver i ideja koju implementira sve veći broj kompanija diljem svijeta.

Glavne Docker komponente

Platforma se sastoji od više komponenti, a svaka ima važnu ulogu.

Docker Engine zovemo DE i to je softver koji se instalira na hostu. DE predstavlja glavni dio docker sustava. Dalje, DE se sastoji od tri glavne komponente:

Server – Docker deamon (dockerd), koji kreira i upravlja kontejnerima.

Rest API – uspostavlja komunikaciju između programa i dockera, te daje instrukcije dockeru.

Command Line Interface CLI – koristimo za pokretanje Docker komandi.

Docker Images su predlošci za kreiranje kontejnera. Slično kao snapshots za virtualne mašine, Docker images su read-only datoteke koje se sastoje od izvornog koda, i svih alata i datoteka potrebnih za pokretanje aplikacije. Svaki image je kreiran iz dockerfile, koji sadrži specifične instrukcije za kreiranje određene Docker image datoteke.

Dockerfile je skripta koja se sastoji od seta instrukcija koje govore kako izraditi Docker image. Instrukcije će pozvati određeni OS, jezike, okruženje, lokacije za datoteke, mrežne portove, i sve druge komponente koje su potrebne da se pokrene image. Sve naredbe u datoteci su grupirane i izvode se automatski.

Docker Hub je najveći cloud-based repozitorij kontejner image datoteka koji je ustupio Docker. Trenutno broji preko 100.000 dostupnih image datoteka za preuzeti. Platforma dopušta preuzimanje i pokretanje vaše aplikacije brzo, bilo gdje, u kolaboraciji sa grupom programera i svih uključenih u projekt.

Slično kao GitHub, developeri mogu preuzimati i postavljati kontejnere na Docker Hub platformi, i odlučiti koji će biti javno dostupan, a koji će moći koristiti određeni timovi i pojedinci.

Prednosti dockera

  • Konzistentnost – Docker nudi pouzdano okruženje za aplikacije koje će raditi na više različitih platformi. Programeri koji koriste različite mašine i sustave, mogu raditi na istom projektu bez ikakvih problema po pitanju kompatibilnosti.
  • Automatizam – Platforma pruža potpunu automatizaciju zadataka koji se ponavljaju, bez potrebe za intervencijom.
  • Brži razvoj – Kako kontejneri virtualiziraju OS, nema potebe za podizanje sustava kada se podiže kontejner. S radom možete započeti u sekundi.
  • Modularnost – Kontejneri su neovisne cjeline i potpuno izolirana virtualna okruženja. U aplikaciji koja adi na više kontejnera, svaki kontejner izvode samo svoje zadatke. Segregacijom aplikacije na takav način, programeri mogu raditi na pojedinom dijelu bez da ometaju rad aplikacije u kompletu.
  • Efikasnost – Kako kontejneri ne trebaju dodatni OS, u praksi su dosta lakši i manji od klasičnih virtualnih mašina. Zauzimaju manje memorije, i drugih resursa.

Docker nedostatci

  • Nema grafičkog sučelja – Docker nije najbolji izbor za one koji se ne snalaze najbolje s komandnom linijom. Naime, Docker ne nudi grafičko sučelje, što znači da ne možete upravljati uz pomoć miša. Sve što radite – radite isključivo uz pomoć komandi koje sami utipkate.
  • Sigurnosna pitanja – Iako se smatra sigurnim, posebno zbog izoliranosti svakog kontejnera, Docker može biti pod sigurnosnim rizicima. Da bi smanjili sigurnosni rizik, svakako slijedite sigurnosne savjete sa službene dokumentacije ove platforme.
  • Može biti težak za savladati ga – Čak iskusni programeri znaju imati poteškoće da svladaju koncept koji ima docker. Ako ste i vješti sa VM infrastrukturom, moguće je da će Docker biti zbunjujući na početku.

Zaključak za kraj

U ovoj objavi smo odgovorili na pitanje što je docker, te smo objasnili ostale pojmove koji se vežu na temu. Saznali ste kako docker radi, što je kontejner i kako radi ovaj pristup virtualizacije. Docker je danas jako popularna platforma, pa ne treba mnogo trošiti riječi o prednostima korištenja dockera.

Ako budete u prilici, isprobajte neki Docker image, da vidite kako sve to radi u praksi. Sretno.

Više...

Igre i gaming

Ne može se reći da često imamo neku hrvatsku video igricu koja će u kratkom roku postati vrlo popularna. Međutim, kada je riječ o...

Internet

Ako ste aktivni na internetu, vjerojatno koristite i neki forum. Ipak, moguće da zapravo ne znate što je forum. U ovom članku ćemo odgovoriti...

Softver i aplikacije

Već prije smo opisali neke poznate Operacijske Sustave, među njima MS Windows, macOS, i Linux, pa je vrijeme da spomenemo danas možda i najviše...

Hardver

Pojam WLAN poznamo kao akronim za „Wireless Local Area Network“, što u prijevodu znači lokalna mreža koje je zasnovana na bežičnim tehnologijama. Danas se...