Docker


Ako razvijate softver onda znate koliko je teško pustiti aplikaciju u produkciju. Treba konfigurirati server, treba podesiti portove, uvjeriti se da je sve u redu i tako svaki puta sa svakim novim serverom. Ili možete koristiti Dockerov virtualni kontejner i olakšati si posao.

U svijetu IT-a događaju se mnoge zanimljive stvari praktički na dnevnoj bazi, no određene usluge i proizvodi privuku malo više pažnje od ostalih. Docker je definitivno jedna od njih, a vjerujemo da će biti zanimljiva svima onima koji razvijaju aplikacije. Razvoj aplikacija može biti jako kompleksan iz mnogo razloga, no najčešći razlozi su miješanje različitih tehnologija, usklađivanje ljudskog potencijala, testiranje napravljenog, podizanje aplikacije na produkcijske servere, rješavanje velikog broja tehničkih problema u hodu … Kada vam ovi problemi postanu svakodnevnica, odnosno kada se s njima susrećete vrlo često, vjerojatno biste sa oduševljenjem dočekali platformu koja vam može olakšati život i koja vam obećava mnogo lakši i brži razvoj aplikacija. Docker je upravo to – platforma koja dozvoljava programerima, sistem administratorima i ljudima sličnih profesija kreiranje i održavanje aplikacija u softverskom kontejneru. Zvuči zanimljivo, zar ne? Saznajte više o Dockeru u nastavku ovog teksta.

Piše: Boris Plavljanić

1

Docker 1.0

Ako imalo pratite svijet startupa onda ste upoznati kojom brzinom startupi dolaze i odlaze sa scene i vrlo vjerojatno imate osjećaj da bi i Docker mogao biti „samo još jedan startup u nizu“ koji će biti popularan jedno kratko vrijeme i nakon toga će svi zaboraviti na njega. Na njegovo mjesto će doći netko drugi sa sličnom ili boljom idejom, no i taj drugi startup čeka ista sudbina… Zašto ovo spominjemo? Zato jer je u prošlosti već bilo sličnih pokušaja da se automatizira i ubrza razvoj aplikacija, no većina tih pokušaja je neslavno završila. Neki startupi su se prebacili na druge usluge ili proizvode, neki su propali, no u biti većina nije uspjela ostaviti značajniji trag. Barem ne u ovom kontekstu. Docker bi mogao biti drugačiji iz mnogo razloga, a neke od njih ćemo spomenuti i objasniti u ovom tekstu, no prije toga vam želimo pojasniti što je cilj Dockera i zašto je ovaj startup uopće nastao.

U prošlosti, kada ste razvijali aplikaciju, sve što ste trebali imati je zapravo laptop, odnosno računalo na kojem ste razvijali aplikaciju, te server na kojem ste pohranjivali podatke. Klijent-server aplikaciju ste razvijali na najjednostavniji mogući način. Kada je aplikacija bila gotova, podignuli ste ju na produkcijski server i klijenti su je mogli početi koristiti.

Najčešće bi veći dio aplikacije skinuli na svoje računalo, a onaj manji dio bi odrađivao server, te bi on pohranjivao i slao određene podatke aplikaciji tj. klijentu. Zatim se razvoj aplikacija naglo zakomplicirao, odnosno postao je izuzetno kompleksan. Sam razvoj aplikacije se podijelio praktički na 10, pa čak i više, zasebnih grana. Tako su sada baze podataka i razvoj istih posebna grana razvoja aplikacije. Isto vrijedi i za front-end odnosno dizajn aplikacije, isto vrijedi za back-end, odnosno onaj dio aplikacije koji korisnik ne vidi (poslovna funkcija i općenito programski kôd koji je kralježnica aplikacije), pa su tu posebni serveri i operativni sustavi za aplikacije i još mnogo toga.

Upariti to sve da radi nije lagano. Dapače, ponekad se više vremena potroši na postavljanje produkcijske okoline i testiranje iste, nego na sam razvoj aplikacije što je vrlo sramotno. U vremenu kada imamo najbolje moguće alate, hrpu biblioteka sa gotovim kôdovima, razno-razne forume i gotove dijelove kôda … mi razvijamo aplikaciju duže nego prije 10-ak godina. Neki će reći: „Tada su aplikacije bile jednostavnije“ i biti će u pravu. Prije su aplikacije bile jednostavnije i pružale su korisniku puno manje mogućnosti, no i dalje je vrijeme potrebno za razvoj aplikacije ogromno i cilj svake kompanije je to svesti na minimum. Razviti aplikaciju u što kraćem roku, obaviti temeljito testiranje u također kratkom roku, te pustiti aplikaciju „van“ bez većih problema.

Nažalost, ne živimo u idealnom svijetu. I tu dolazimo do Dockera. Ideje, ili ako želite – startupa, koji vam želi omogućiti da vi aplikaciju spakirate u virtualni kontejner, te ju tako prenosite sa servera na server, sa računala na računalo i da ju možete staviti u pogon vrlo brzo. Oni zapravo žele skratiti onaj zadnji dio razvoja aplikacije – puštanje u produkciju. Kao što smo rekli, to može biti izuzetno težak posao, posebice za programere koji nemaju iskustva s time – puno je tu tehničkih detalja i stvari koje zapravo spadaju u domenu „sistemskih inženjera“ koji su mnogo bolji u konfiguraciji produkcijskih servera. Prema određenim neslužbenim statistikama, Docker bi mogao skratiti razvoj aplikacije za 15-20% što bi bilo fantastično u svakom pogledu.

3

 

Docker u suštini

Kao virtualna mašina, samo mnogo manja i laganija, Docker kontejner vam dozvoljava da aplikacije i servise prenosite u kontejneru sa jednog mjesta na drugi, odnosno sa jednog hosta na drugi. U suštini, moglo bi se reći da Docker objedinjuje alat za verzioniranje i alat za izradu slike aplikacije/sustava, te vam dozvoljava jednostavno prenošenje aplikacije koju zatim možete instalirati na fizički server, u virtualnu mašinu, na određeni cloud servis. Evo jedan jednostavan primjer. Recimo da želite Docker kontejner koji sadrži običan servis (bilo koji jednostavni servis) ili recimo Apache web server. Kontejner bi se izgradio na bazi od Linuxa (Ubuntu ili CentOS) i taj određeni servis koji smo spomenuli bi bio instaliran i konfiguriran kao da se nalazi na bilo kojem Linux sustavu. I sve to zapakirano u jednoj datoteci, odnosno kontejneru kojeg ste izgradili.

Sada taj isti kontejner možete prebacivati, kao što smo rekli, od hosta do hosta, od servera do servera, te ga puštati u produkciju gdje god želite. Najlakši način je prebaciti kontejner na GitHub ili BitBucker i povući ga na računalo na koje ga želite instalirati. Zašto Git version control? Zato jer je to najjednostavniji način dijeljenja i uvijek će svi moći povući zadnju verziju kontejnera. Kada kažemo „svi“ mislimo na one koji imaju pristup vašem Git repozitoriju, bez obzira na kojem se servisu nalazio. Docker za sada radi samo sa GitHubom i BitBucketom, no realno gledajući to su dva version controla koji se najviše koriste i kojeg koristi 90% programera. Vjerojatno će se u budućnosti dodati još neki servis, no to ne treba očekivati ove godine jer se radi na nekim drugim stvarima bitnima za same Docker kontejnere. U svakom slučaju, ako planirate koristiti Docker, morati ćete napraviti korisnički račun na jednom od spomenutih servisa.

Vratimo se na produkciju. Napravili ste kontejner, stavili ste ga na GitHub/BitBucket i vrijeme je da ga pustite u produkciju. Dovoljno je da taj isti kôd replicirate na virtualni server, fizički server ili na cloud instancu ili bilo gdje drugdje gdje možete pokrenuti Docker. Ne morate uopće brinuti o zavisnosti među hostovima, niti se zamarati instalacijom aplikacije, podešavanjem hardvera ili upasti u ostale klasične zamke virtualizacije. Sve što morate napraviti je putem Docker alata pravilno pokrenuti Docker kontejner i to je to.

Docker napravi virtualni kontejner baziran na Linuxu i možete ga pokrenuti praktički bilo gdje jer tom istom kontejneru treba samo Linux jezgra da bi se mogla pokrenuti, a Docker u potpunosti iskorištava mogućnost da se kontejner začahuri na jednom procesu na računalu domaćinu (hostu) koji je u potpunosti odijeljen od operativnog sustava i okruženja domaćina. To znači da okruženje na kojem ste pokrenuli Docker kontejner uopće ne zna za njega, odnosno ne može mu pristupiti niti mu može „išta napraviti“, kao ni što Docker kontejner ne zanima okruženje na kojem se nalazi.

Samim time možete na jednom virtualnom serveru pokrenuti X različitih Docker kontejnera koji reprezentiraju servise, a oni neće znati jedan za drugoga jer je svaki na svom procesu i radi ono za što je namijenjen. A rekli smo već na početku da se tu radi o jako laganim procesima i mnogo ih je lakše koristiti nego kreirati hrpu virtualnih mašina koje bi radile isti posao kao dotični kontejneri, ali bi vas mnogo više koštali – i financijski i hardverski.

Nismo spomenuli da se Docker sastoji od dva alata – Docker Enginea i Docker Huba. Docker Engine je zapravo glavni alat i runtime koji instalirate na računalo domaćin na kojem želite pokrenuti Docker kontejner. Instalacija istoga je vrlo jednostavna, a možete to učiniti preko komandne linije koju ćete naći u svim Linux distribucijama. Čak imate na stranicama Dockera detaljan tutorijal koji će vam pokazati apsolutno sve – od toga kako skinuti Docker do toga kako ga koristiti, koje su mu glavne naredbe i kako općenito Docker funkcionira.

2

Rad sa Dockerom

Kako raditi sa Dockerom? Isto kao i sa svim Linux sustavima zapravo. Glavni alat će vam biti komandna linija i ako niste s njom na „ti“ imati ćete problem. Možda i nećete ako ste voljni učiti koristiti komandnu liniju i naučiti ponešto o radu Linuxa. S druge strane, ako ste se ikada susreli sa Linuxom i komandnom linijom, znate da to i nije tako strašno. Ponavljamo – Docker ima fantastičnu dokumentaciju i tutorijale i ako samo njih slijedite, moći ćete napraviti što god poželite. Savjetujemo vam da dobro pročitate dokumentaciju i vidite koje naredbe možete koristiti, koji su opcionalni parametri koji vam mogu olakšati posao i kako bi cijeli proces kreiranja kontejnera, prebacivanja istoga na GitHub i skidanje na neki drugi host trebalo uopće izgledati. Pametno je upoznati se sa cijelim procesom prije nego se odlučite koristiti Docker.

Ljudi koji koriste Docker još od verzije 0.X kažu da je krivulja učenja vrlo kratka i više-manje bezbolna što je poticaj za one koji se boje Dockera i koji nisu sigurni da li bi ga trebali probati ili ne. Čak možete pročitati i jako puno korisnih savjeta o tome kak ograditi kontejnere, što staviti u njih, koliko ih opteretiti, kako podijeliti aplikaciju ili servise na kontejnere i tako dalje. To je prilično opširna i duboka tema u koju trenutačno nećemo ulaziti, no svakako treba razmisliti o određenim pitanjima i praksama. Da, Docker je tek u verziji 1.0, odnosno izašao je polovicom prošle godine i trebati će proći još određeno vrijeme da se neke stvari iskristaliziraju, ali vjerujemo da će Docker još dugo biti s nama tako da će sve doći na svoje vrlo brzo.

Cijene

Naravno, teško je očekivati da će ovakva usluga biti besplatna. Startupi i kompanije općenito, moraju se financirati od svojih proizvoda i usluga. Docker nije skup, čak ni pojedincima, a kamoli kompanijama jer plaćate od 7 do 50 dolara na mjesečnoj bazi, ovisno o vašim potrebama. Realno gledajući, to nije prevelik iznos za ovakvu uslugu. Pogotovo kada uzmete u obzir vrijeme koje vam Docker skrati prilikom prebacivanja aplikacije ili servisa sa lokacije na lokaciju. Za 0 dolara možete dobiti korisnički račun koji ima neograničen broj javnih repozitorija i jedan privatni repozitorij.
To i nije previše korisno jer javni repozitoriji, kod kompanija koje se bave razvojem softvera, ne dolaze u obzir, a jedan privatni repozitorij je premalo.

Zato smo rekli da se cijene kreću od 7 dolara. Za 7 dolara dobijete također neograničen broj javnih repozitorija (odlično za isprobati kako Docker radi), te dobijete 5 privatnih repozitorija… I tako dalje do 50 dolara za koje dobijete neograničen broj javnih repozitorija i 50 privatnih. Sasvim dovoljno za sve potrebe. Ukoliko trebate više od toga, morati ćete ih kontaktirati da vam naprave poseban plan samo za vas. Vjerujemo da se s njima nije teško dogovoriti oko toga.

Mnoge poznate kompanije su već probale Docker i mnoge ga koriste u svakodnevnom radu. Jedna od njih je eBay koja je svima poznata i oni koriste Docker za svoja testiranja i prebacivanje servisa sa testnog servera na testni server, no u bližoj budućnosti planiraju staviti Docker i u produkciju. Nadalje tu su New Relic, RackSpace, Baidu, Spotify, Bleacher report, Yelp, GILT, Yandex, Cambridge healthcare i mnoge druge. Pošto je Docker tek u verziji 1.0, ovo je veliki uspjeh. Vjerujemo da će se na ovaj popis pridružiti i mnoga druga zvučna imena poput Googlea, Facebooka, Yahooa… Ukoliko imate potrebe za ovim servisom ili ste jednostavno znatiželjni, svakako vam preporučamo da probate ovaj servis i vidite što vam on sve nudi. Vjerujemo da ćete ostati ugodno iznenađeni i da ćete ga koristiti u razvoju svojih aplikacija.


RELATED ARTICLES

Komentiraj

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular