NAPOMENA: Ovo i sva uputstva koja slede nisu oficijalna i moja su interpretacija originalne dokumentacije i uslova pod kojim se izvode. Tako da mogu i ne moraju da budu ispravna.
Pa da krenemo.
Docker je ako ste developer ili devops vaš najbolji prijatelj. Dosta ljudi ga izbegava zato što im izgleda teško i previše komplikovano za rad, ali istina je potpuno suprotna.
Koliko puta ste se setovali na isti projekat na različitim računarima? I uvek je milion stvari krenulo naopako. Nije bila dobra verzija baze, ili nije bio dobra verzija php-a, ili nešto u operativnom sistemu nije radilo kako treba a vi zato što ste developer možda niste znali šta je, ili ako ste devops niste znali šta je to developer stavio od dependencya. I tako prebacujete se sa računara na računar (sa čoveka na čoveka) i trošite svoje i firmino vreme na setovanje.
Tu docker uskače da vam pomogne. Docker je prostim rečima mikro operativni sistem (ali je u stvari servis). On koristi kernel i neke biblioteke host operativnog sistema, ali je u suštini potpuno nezavistan i osećaj kada radite unutar kontejnera je kao da ste na nekom remote serveru. Možete instalirati sve što vam treba, možete setovati sve što vam treba. I možete bez ikakve griže savesti sve unutra pokvariti i to neće imati nikakve posledice na host operativni sistem.
Docker image
Kako bi podigli kontejner, morate imati njegov image. On se sastoji od više slojeva koji su u suštini fajlovi koji su generisani ispaljivanjem neke od komandi tokom build procesa. U toku buildanja image-a, svaka komanda koja se unese npr. ” apt update” generiše novi sloj, tj novi fajl. Docker image slojevi koji su identični, koriste se između različitih imidža, npr. Imate image “ubuntu-git” i image “ubuntu-jenkins” oni imaju zajedničku stvar, a to je njihov operativni sistem. Tako da će uštedeti prostor i koristiti isti “sloj” -(eng. layer) . Ovo je primer slojeva za image alpine:latest.
Generalno, vi ovo ne morate znati, ali mislio sam da će vredeti da se pomene kako to izgleda.
Docker container
Sada kada znate šta su imidži, da vam malkice približim i kontejnere. Kada bilo koji image želite da pokrenete, i od njega kreirate servis, stvorićete kontejner. To je nešto poput virtualne mašine koja će pokrenuti vaš image. Bitno je da kontejner posmatrate kao PRIVREMENU stvar. Nakon što prestane da bude potreban on će se zaustaviti. A u jednom zaustavljen kontejner više ne možete ući. Primer. Pokrenuo sam image redisa.
Vidite da je dobio ID 76ad5369f68d. Nakon zaustavljanja, proverio sam da li je neki kontejner aktivan. Video da nije, i opet ga pokrenuo.
Vidite novi ID: 41a531650ed8. Isti image. Ista komanda za pokretanje. Dva različita kontejnera. U tome je prava lepota dockera. Ne možete vi dovoljno nešto zeznuti koliko sve možete za 5 sekundi vratiti na početno stanje 🙂
Trebate znati i da svaki kontejner ima svoj networking, potpuno je izolovan od ostalih kontejnera, i sem ako mu se to ne naznači, on neće ni znati da nešto tu postoji osim njega.
Docker Registry
Sve imidže koje napravite negde morate čuvati. Za to se koriste registri. Većina koriste onaj glavni docker hub. Besplatan je. Kreirate tamo nalog. Ulogujete se na računaru koristeći komandu “docker login” . Ulogujete se na serveru. I isto kao na gitu, koristite komande push i pull 🙂 . Prelepo i jednostavno.
Sve početne imidže koje ćete ikada koristiti preuzećete sa docker huba. Pa vredelo bi da se upoznate sa sadržajem.
Znate koliko je teško nekada setovati neko parče softvera i koliko biblioteka može nedostajati da to nešto proradi. Znate ono, radi samo na tom operativnom sistemu, sa tim zastarelim bibliotekama kojih više nema nigde. Ali vi ste nakako uspeli sve to da pronađete, podignete i naterali da radi, ako ste to uradili unutar kontejnera možete sačuvati taj kontejner u image. I možda nekom olakšati život tako što ćete taj image deponovati na neki javni registar. Ujedno će i vama biti dostupno za sledeći put.
Možda vama treba nešto, pregledajte docker registar, možda se neko već sreo sa tim problemom i rešio ga za vas.
Za sada, od mene toliko. U sledećim tekstovima možete očekivati detaljnija objašnjenja i praktičnu primenu dockera.
Hvala na čitanju.