Godina 2007. poznata je po mnogo toga, ali vjerojatno najpoznatije događanje bila je prezentacija iPhonea. Mnogi su govorili da od tog uređaja neće biti ništa i da će propasti, no već sljedeće godine pojavio se AppStore. Aplikacije su ga u kratkom vremenu preplavile i bilo je nevažno jesu li besplatne ili komercijalne, ako su vrijedile, ubrzo bi se pojavile na većini telefona. No, što je s njihovim razvojem?

Iako autor ovih redova nema nikakvog iskustva u programiranju bilo kakvih aplikacija, niti se želi baviti programiranjem, danas je svima jasno da bez aplikacija ne možemo funkcionirati. Možda se čini da bi ovaj tekst mogao ići u smjeru govora o razvoju, no odmah ću reći da to neće biti slučaj. Poanta je da je razvoj aplikacija i broj dostupnih razvojnih platformi danas napravio tržište za svakoga.

Danas postoji mnoštvo aplikacija i platformi za sve moguće uređaje i operativne sustave i tu se javlja jedan od čestih izazova; kako dovesti aplikaciju na sve uređaje i platforme bez pretjeranog utroška vremena na razvoj za specifičnu platformu?

Plavi kit

Platforma Docker je mnogima danas još uvijek nepoznata. Docker se pojavio 2013. godine i postao dostupan za korištenje. Što je u biti Docker?

Ideja iza Dockera je jednostavna; kako postaviti aplikaciju sa svim njezinim popratnim zahtjevima, frameworkom, dakle sa svime što je potrebno kako bi aplikacija radila, na platformu koja je izvorno ne podržava? Drugo, kako aplikaciju koja je konfigurirana i spremna za korištenje migrirati na novi stroj u što kraćem vremenu ili prebaciti s testne u produkcijsku okolinu?

Drugim riječima, bilo bi odlično kada bi aplikacija bila u svojem sandboxu sa svim elementima spremna za pokretanje neovisno o hardveru i operativnom sustavu na kojem korisnik radi. U takvim situacijama upravo Docker dolazi kao rješenje. Sloj između OS-a i sandbox aplikacije koji će razumjeti kako Dockerov paket radi i u konačnici prezentirati aplikaciju krajnjem korisniku.

Često pitanje koje se nameće jest koja je onda uopće razlika između neke virtualne okoline (VM) i Dockera? Najbolje je to objasniti uz jednostavnu sliku koja jasno prikazuje razliku ovih dvaju pristupa.

Docker
Usporedba između virtualne okoline i Dockera

Sa slike je vidljiv pristup virtualnog stroja i njegova pripadajućeg hosta/, dok je s desne strane prikazan Dockerov pristup. Razlika je poprilična i vidimo da osim što je za punokrvnu virtualizaciju potreban nekakav hipervizor (VMWare Fusion, ESXi, Parallels, VirtualBox; dakle tip 1 ili 2 nebitno) uz to nam je potreban i OS virtualnog stroja na kojem će se u konačnici pokrenuti neka aplikacija (App A, B...).

Iako su neki hipervizori kao i OS-ovi besplatni, to ne mora uvijek biti slučaj, no čak i da je tako, postoji glad za resursima. Svaki virtualni stroj traži određenu količinu procesorske snage, nešto radne memorije i slično, a sve to da biste vi pokrenuli neko aplikacijsko rješenje.

Dockerov pristup je različit. Vidimo sa slike da je jasno kako će nam trebati neki stroj (što jači to bolje, ali ne mora biti serverskih performansi), OS koji će pokretati taj uređaj i nakon toga nam je potrebna Dockerova platforma (Docker Engine sloj sa slike). Dakle, instalacija platforme sa svojim instrukcijama i "jezikom" koji razumije manipuliranje (sandbox) aplikacijskim kontejnerima.

Treba napomenuti da nemamo potrebu za specifičnim OS-om već se aplikacija direktno oslanja na Dockerovu platformu. To znači da resursno gledajući ne moramo imati CPU i RAM koji će se morati odvojiti samo kako bi se računalo pokrenulo i da bismo tek onda došli do svoje aplikacije (kao u slučaju virtualnih okolina, tj. računala). U ovom slučaju trošit ćemo resurse samo na zadovoljavanje potreba navedene aplikacije.

Rješenja zasnovana na virtualnim okolinama dovode nas do situacija u kojima u konačnici možemo koristiti aplikaciju koja nije sama po sebi gladna resursa, ali činjenica da nam treba virtualno računalo samo zato da bismo je mogli i pokrenuti, velik je zahtjev. A što je tek s održavanjem OS-a virtualnog stroja? Treba ga redovito ažurirati i brinuti se o antivirusnoj zaštiti ako se radi o nekom izdanju Windowsa. Ukratko - boli glava!

Synology DSM + Docker

Prikazat ću kako Dockerovo rješenje radi na Synology NAS platformi na kojoj se pojavio unazad nekoliko godina. Prije nego krenem s primjerima, odmah bi naveo da ne podržavaju svi Synologyjevi modeli Docker. Postoje hardverski preduvjeti kako bi radio. U Synologyjevu svijetu to su uglavnom "+" uređaji (dakle oni koje pogone Intelovi procesori).

3rd party scena dostupnih aplikacija za DSM je sada, možemo reći, solidna. Zajednica je velika i razvoj se svakodnevno ubrzava i širi. Kao što je na početku članka spomenut Appleov AppStore i njegovo značenje za platformu, tako i popularnost DSM-a, pa tako i Synology imena, čine upravo aplikacije i servisi kojima možemo proširiti funkcionalnost našeg NAS uređaja.

Synology je podrškom za Docker otvorio mnoštvo drugih servisa i aplikacija koje izvorno nisu podržane, točnije nisu dostupne iz njihovog službenog Package Centrea. Primjerice, kako bi bilo na NAS-u (koji ima dovoljno fizičkih resursa) koristiti Ubuntu OS? Ili recimo CentOS? Možda Ghost Blog platformu ili jednostavno neko aplikativno rješenje koje vam treba, ali službeno za Synology nije podržan kao one-click paket?

Instalacija i korištenje Dockera

Kao i svaki drugi paket, Docker se mora instalirati preko Package Centera prije nego li se može koristiti. Nakon svega jednominutne instalacije, platforma će biti dostupna preko svoje ikone unutar DSM-a. Ovdje treba naglasiti da je Synology napravio vlastito sučelje za lakše upravljanje dijelom platforme i taj UI će varirati od OS-a do OS-a na kojem se Docker nalazi.

Filozofiju smo prošli, a sada da vidimo drži li cijela priča vodu.

Kako bismo nešto koristili putem Dockera moramo učiniti dva koraka:

1. preuzeti image željene aplikacije,

2. kreirati container temeljem instalacije iz prvoga koraka sa svim popratnim konfiguracijskim parametrima.

Otvaranje Dockerove aplikacije prikazat će grafičko sučelje koje se može, ali i ne mora koristiti. Naime, neke instalacije mogu se lijepo konfigurirati putem sučelja, ali s druge strane, neke će se moći samo izvesti putem terminala, tj. naredbenog retka. U nastavku će se pokazati primjeri za obje situacije.

Sučelje

Kao što vididte s donje slike, pregled svih trenutno aktivnih aplikacija vidljiv je s prikazom potrošnje dvaju glavnih resursa (CPU i RAM). Dodatno se vidi i njihovo ukupno opterećenje na razini cijelog DSM-a (dakle ovo se ne odnosi samo na Dockerove aplikacije).

Docker
Pregled korištenja resursa

S druge strane, ako želimo vidjeti koje su sve aplikacije složene i konfigurirane, možemo koristiti "Container” tab. Preko ovog pregleda aplikacije se mogu pokretati te zaustavljati koristeći odgovarajući “prekidač”.

Docker
Pregled "Container" taba

Konfiguracija aplikacije

Prije sam naveo da za početak moramo preuzeti instalaciju putem Dockerova repozitorija. Izvor može biti zadana putanja koja je već prethodno postavljena, ali s druge strane mogu se definirati i dodatne putanje (recimo ako se radi neki lokalni razvoj).

Prije korištenja neke instalacije bilo bi uputno provjeriti konfiguraciju kako bismo bili sigurni da neće biti problema prilikom korištenja. Za svaku aplikaciju bit će sigurno nekoliko dostupnih instalacija (ovisno o tome koliko je popularna) i zato će neke biti bolje ili lošije dokumentirane. Većina dobro dokumentiranih instalacija ima poveznicu na dokumentaciju i konfiguraciju, primjerice: https://hub.docker.com/r/linuxserver/radarr/

Nakon preuzimanja instalacije može se krenuti s postupkom konfiguracije putem sučelja ili putem naredbenog retka. Treba reći da se i preuzimanje samih instalacija također može izvesti na oba načina.

Docker
Ekran s općenitim postavkama" taba

Važno je napomenuti da prije nego li se krene raditi s nekom aplikacijom putem Dockerova okružja, svi podaci, kao i sama aplikacija, bit će sandboxani. To znači da neće postojati elegantan način za pristup eksternim podacima ili recimo konfiguracijskim datotekama same aplikacije. Dodatno, prilikom svakog pokretanja samoga "kontejnera", on će se postaviti od nule (resetirati) kao da prvi put pokrećete aplikaciju. Naravno, tome se može doskočiti i to je upravo ono oko čega većina korisnika ima problema. Ovo je, što se kaže, by design ponašanje i kao takvo traži konfiguriranje same aplikacije na ispravan način kako se spomenuta situacija ne bi događala.

Zato moramo prilikom konfiguracije definirati osnovne parametre, ali najbitnije je razdvajanje same aplikacije od konkretnih podataka koji će se stvarati i modificirati. Nakon što se zada ime budućeg kontejnera možemo na početnom ekranu odabrati i kontrolu nad CPU/RAM resursima kako aplikacija ne bi nepotrebno divljala. Nakon ovoga koraka prelazi se u definiranje naprednih postavki.

Jedna od najbitnijih postavki, kako je prije spomenuto, jest razdvajanje podataka od same aplikacije. Za te potrebe koristi se tab "Volume" putem kojeg se izvodi mapiranje kontejner-direktorija s nekom stvarnom lokacijom na stroju koji služi kao Dockerova platforma (recimo NAS i njegov datotečni sustav). Dockerova virtualizacija radi na principu mapiranja resursa iz kontejnera prema fizičkom stroju, kao i mapiranja između više kontejnera ako je potrebno.

Pravila igre su uvijek ista: svaki element ima svoj aktivator, switch (više primjera kasnije), ovisno o tome što želimo konfigurirati, te nakon naziva switcha ide mapiranje i to prvo host destinacija, a zatim parametar unutar samoga kontejnera.

Primjerice:

-v (putanja do neke lokalne mape):/config

Ovo je upravo primjer kako se spaja lokacija neke mape (ili datoteke) prema specifičnoj mapi (datoteci) unutar samoga kontejnera.

Započinje se sa switchem -v (volume) te se nakon toga uvodi putanja gdje želimo da se podaci pohranju i budu dostupni. Dvotočka (:) služi kao simbol koji govori da putanja koja slijedi jest lokacija do mape/datoteke unutar samoga kontejnera. Na ovaj način može se napraviti proizvoljan broj putanja kako bi se mapiralo sve što želimo imati pod prstima i kontrolom izolirano od ostatka kontejnera. Korištenjem ovog postupka znamo da prilikom ponovnog pokretanja aplikacije (recimo uslijed resetiranja Dockerova hosta ili nadogradnje aplikacije na novu verziju) neće biti problema s podacima. Dodatno, možemo izraditi sigurnosnu kopiju podataka i konfiguracije koju smo izdvojili na neki konvencionalan način.

Docker
Pregled postavki

Po ovom modelu možemo raditi razna mapiranja ostalih parametara, primjerice portova, varijabli i slično:

-p 1024:8000 (primjer mapiranja porta na kojem želimo konkretnu aplikaciju i njezina internog porta na kojem se aplikacija javlja)

-e PGID= (primjer definiranja varijable group ID-a; naravno ako aplikacija ima potrebu za takvom konfiguracijom).

U konačnici broj parametara može biti popriličan - kao što je vidljivo s prethodne slike. Preostaje pokrenuti aplikaciju i pristupit istoj preko lokalne IP adrese računala na kojem se nalazi Docker aplikacija i specifičan port.

Drugi način kreiranja containera aplikacije je preko naredbenog retka i neke parametre možemo definirati samo ovom metodom.

Kao primjer ću koristiti odličan deamon - alat za dijagnostiku i statistiku resursa u stvarnom vremenu. Ukratko, DSM monitor je u najmanju ruku jednostavan, ali spor i škrt na informacijama. Kao njegovu zamjenu koristim NETData alat.

Navedeni deamon ćemo dakle instalirati tako da ćemo ga preuzeti iz repozitorija, ali njegovo kreiranje će se izvesti putem SSH konzole. Koristim NETData paket pod imenom titpetric/netdata što ne znači da se ne može koristiti neki drugi.

Kako bismo pristupili Dockerovim naredbama, nakon pristupa vašem NAS-u putem SSH-a i prijavom kao root user, možemo izvršiti slijedeću naredbu (ovo je samo primjer):

docker run --name netdata_titpetric -d --cap-add SYS_PTRACE -v /volume1/docker/netdata/config:/etc/netdata:rw -v /volume1/docker/netdata/log:/var/log/netdata:rw -v /proc:/host/proc:ro -v /sys:/host/sys:ro -p 19999:19999 titpetric/netdata

Cijela priča počinje s naredbom docker nakon koje ide ili create ili run naredba ovisno o tome što konfiguracija traži. U ovom slučaju deamon se pokreće pa zato imamo run naredbu.

--name (je switch kojim se definira ime containera; proizvoljno) --cap-add (definiranje Linuxovih mogućnosti; točnije containeri zadano ne mogu pokretati deamone unutar sebe pa se definira navedena naredba kako bi to bilo moguće) -v - već prije spomenuto mapiranje fizičke lokacije gdje želimo neke podatke iz samoga kontejnera. Tu posebno treba naglasiti mapiranje proc i sys NAS mount pointova koji gledaju na host/proc i host/sys destinacije našeg hosta (u ovom slučaju NAS-a) i to s RO (read only) dozvolama. Ukratko, s tih destinacija će se i povlačiti najviše parametara vezanih za hrpu značajki vašeg NAS uređaja.

Za kraj treba navesti da se sve ovo slaže kao jedna naredbena linija. Po samom izvršavanju kreirati će se kontejner i samoj stranici možemo pristupiti putem lokalne IP adrese NAS-a i porta (u ovom slučaju port je 19999, što je definirano -p switchem).

Zašto je ovo trebalo učiniti putem naredbenog retka, a ne preko sučelja? Iz razloga što za -v mapiranja ne možemo izvoditi na mapama koje nisu vidljive unutar samog sučelja (a proc i sys to zasigurno nisu). Također, switch za definiranje Linuxovih mogućnosti -cap-add nije moguće uvesti nigdje unutar sučelja.

Možda sve ovo djeluje pomalo komplicirano i naporno, ali jednom kada se shvate osnovna načela, stvar je vrlo jednostavna, a i ovakve se naredbe ne moraju nužno pamtiti već se kreiraju i pohrane. Dovoljan je jednostavan copy paste ako je potrebno kreirati novi kontejner u nekom trenutku.

Nadogradnja aplikacije

Doći će vrijeme kada će, kao i sve ostale aplikacije, biti potrebno nadograditi aplikacije unutar Dockerova svijeta. Kako i kada to raditi? Ovo je jedan od trenutaka kada Dockerove prednosti zaista dolaze do izražaja. Pretpostavimo da je nova verzija aplikacije (image) spremna, a vi koristite neku stariju verziju koja radi, no želite je nadograditi iz ovog ili onog razloga.

Docker
Registry tab

U svega dva koraka možemo nadograditi aplikaciju. Prvo, odlazimo unutar sučelja na Registry tab i preuzimamo novu verziju. Nakon toga zaustavljamo aplikaciju preko odgovarajućega kontejnera. Iz Action izbornika odabiremo Clear opciju (koja neće uništiti konfiguraciju niti podatke, već će samo natjerati aplikaciju da počne koristiti novu verziju pri sljedećem pokretanju) te za kraj opet pokrećemo kontejner. Gotovo!

Docker također nudi i opciju kloniranja kontejnera, recimo u svrhu testiranja više verzija postavki ili raznih verzija same konkretne aplikacije. Primjerice, može se koristiti ista aplikacija preko dva različita kontejnera (na različitim portovima), ali recimo s drugim postavkama. Na ovaj način možemo testirati i troubleshootati neki problem.

Zaključak

Evidentno je da se Dockerom mogu znatno proširiti mogućnosti nekog uređaja koji, iako ima tehničkih mogućnosti, možda zbog OS-a ima neka ograničenja. Dockerom sve to možemo zaobići i koristiti željene aplikacije bez neke "ekstra-kemije" (Ipkg, optware). Također i migracija s jednog hardvera na drugi (uz pretpostavku da na oba može biti instaliran Docker) je posao od svega nekoliko minuta.

Osobno sam u zadnjih godinu dana gotovo 90% korištenih aplikacija prebacio u Docker (osim nekolicine koje su Synologyjeve aplikacije i kao takve se instaliraju iz njihova Package Centra) i moram priznati da je odličan. Prebacivanje iz sustava konfiguracije gdje je aplikacija instalirana izvorno na stroju, u sustav Dockerova svijeta je također trivijalan posao. Nakon slaganja aplikacije u Dockeru i spajanja na postojeće podatke (konfiguraciju, bazu itd.) stvar funkcionira bez da aplikacija razazna da sada radi kao sandbox rješenje.

Ako imate vremena i potrebe za testiranje aplikacija i njezinih načina korištenja ili jednostavno želite čistu sandbox situaciju koja neće brljati po ostatku vašeg OS-a, Docker je rješenje za vas. Dajte si malo vremena i probajte, sigurno nećete požaliti. Za kraj još samo napomena da je izuzetno je važno imati sigurnosnu kopiju svojih podataka i konfiguracija koje koristite unutar aplikacija kako bi rekreiranje bilo što brže i bezbolnije.

 

Komentari  

dpasaric
28-02-2018 | 14:32
Hvala ti na članku Rusty. Ono što mene sada zanima, čisto da mi kažeš "na prečac" jer vjerojatno znaš, mogu li ja tako izvirtualizirat i u neki sandbox par PC aplikacija koje mi trebaju? Npr. imam jednu prastaru MS DOS aplikaciju za neke fizikalne izračune u vezi automobila. Glupo mi je radi te male aplikacije uvijek podizati cijeli PC emulator.

Ili drugi primjer: imam Windows aplikaciju koja traži podatke s CD-a koji je zapravo samo mountani ISO image (neki katalog s dijelovima). Bilo bi mi super da mogu sve to skupa zajedno zapakirati u jedan izvršni file koji mi radi na Macu i da mogu u trenu doći do podataka koji mi trebaju bez cijele predstave s VirutalBoxom, AVG-om za viruse i stalnim updateima. Prolaze li takve stvari ili ne?

Ili je sve to skupa zamišljeno samo na nekakvoj developerskoj razini, pa da onima koji pišu softver bude lakše portati stvari nabrzaka gdje treba, ali nema mogućnosti da se već gotove stvari izoliraju? Sjećam se Wine sustava, ali nisam ga nikada isprobao.
Anonimac
+1 28-02-2018 | 14:50
Davore, docker ma mac-u podrzava samo linux image-a, stoga nemozes virtualizirati Windows aplikacije. Docker cak nije niti prava virtualizacija, nego samo grupiranje resursa racunala, sve se vrti nativno na harveru/OSu. Ako se Docker pokrece na Windowsima, onda se mogu vrtiti i windows i linux image-i, za linux windows digne linux putem hyper-va (VM masina) u pozadini i tamo hosta linux container.
Docker je prvenstveno napravljen da olaksa deployment server aplikacija (CI/CD pipeline), da se infrastruktura (dependencyji) skriptira (dockerfile), i njeno upravljanje olaksa (docker swarm, kubernetes).
dpasaric
28-02-2018 | 14:59
I sumnjao sam da to ide u tom smjeru, ali vrijedi pitati! Vidio sam svakakvih čarolija zadnjih godina. ;) Probao sam i nekoliko Wine portova, radili su, ali nekako traljavo. No, dok je u pitanju neka dosadna spora aplikacija to prolazi ok. Hvala!
rusty
+2 28-02-2018 | 15:15
Pa za DOS app ne mogu tvrditi to bi trebalo malo pokopati, ali za Win dio tj njegove aplikacije bi se dalo napraviti kao Docker rješenje no tu treba navesti da cross architecture docker će i dalje imati 'malu' virtualku ispod sebe koja će emulirati izvornu okolinu kako bi se mogla vrtiti na nekoj drugoj arhitekturi.

Prije par godina za takvo nešto je trebala u biti kompletna virtualka unutar koje bi se onda vrtio docker container. Trenutne vezije Dockera za mac i windows u biti imaju taj sloj još 'tanje' napravljen tako da je u biti moguće tako nešto napraviti. Dakle Docker engine se u biti vrti na Apline Linux distibuciji preko xhyve virtualnog stroja na macos-u ili hyperV (rola) na windows strani. Managment te 'male virtualke' hendla Docker aplikacija ne punokrvni hypervisor.

Poanta je da ti na cross strani ne treba u biti ni framwork ni runtime. Recimo imaš java app u docker, ne treba ti java support na bare metal instalaciji.

Jasno je da ukoliko ostaješ na istoj arhitekturi da je to najlakše i najbolje, ali Docker će sigurno i dalje raditi na tome da transparentnost postane sve bolja i bolja i trenutno je bolje nego što je bilo kada se pojavio na sceni, a vjerojatno će biti još bolje.

Svakako je primarno zamišljeno i napravljeno da se olakša rad developerima i testerima no pošto se neke aplikacije razvijaju za više platformi očito je da se krenulo i u tom smjeru. Dodatno, jednostavnost je više naglašena kada su u pitanju neke web aplikacije, a ne appovi vezani za konkretnu arhitekturu, no uz nešto truda može se napraviti.
Anonimac
28-02-2018 | 15:43
Docker nije primarno napravljen za dev/test nego za deployment i hosting...
Kada je prvi put predstavljen, tamo 2013, onda je sluzio za izolaciju aplikacija primarno na EC2 virtualci. Ali kako se tu nije moglo zaraditi dovoljno novaca, dosli su novi manageri i direktori, te se okrenuli problemu deploymenta opcenito, znaci nevezano za platformu.
Riba
28-02-2018 | 18:11
dpasaric je rekao:
Npr. imam jednu prastaru MS DOS aplikaciju za neke fizikalne izračune u vezi automobila. Glupo mi je radi te male aplikacije uvijek podizati cijeli PC emulator.


Dosbox ti ne pomaže?

https://www.macupdate.com/app/mac/14973/dosbox
dpasaric
28-02-2018 | 18:16
Ha, nisam za to niti znao! Hvala, pogledat ću! :)
Kloba
28-02-2018 | 20:43
Lijepo napisano, da i tumple poput mene shvati o čemu pričaš. Svaka čast rusty!
Danijel Horvat
02-03-2018 | 13:06
Meni taj Docker se niš ne sviđa. Dođe mi ko Java. :D
rusty
02-03-2018 | 14:01
Jao.... Docker izjednačiti sa Javom je... jao..., vrati taj NAS nazad za kaznu!
Danijel Horvat
02-03-2018 | 14:49
Daj vidi smajli iza rečenice. A točno sam znao da ćeš tako reagirati ;)

Inače, kad smo već kod NAS-a moram onaj push tutorial proučiti koji si negdje u temi ostavio.
rusty
02-03-2018 | 14:50
Ma jasno ;)

http://www.jabucnjak.hr/forum/razno/162053-synology-notifikacije-putem-push-servisa.html#162053
dpasaric
04-03-2018 | 02:13
@Riba - samo da zahvalim na DOSBox preporuci! Odlično besplatno rješenje za DOS programe, konačno sam upogonio taj stari program koji mi je trebao bez problema! No, evo, ne bi se dogodilo da nije bilo ovog članka i rasprave o svemu... :)
petros
04-03-2018 | 18:38
Možda pitam glupost, ali tko pita ne skita! 8) Da li bi ja uz pomoć ovih alata mogao igru napisanu samo za Android nekako staviti u "kontejner" za iOS i onda je pokrenuti na mom iPod Touch? 8)
rusty
04-03-2018 | 20:27
Od nedavno poostoje neki pokušaji Dockera na Androidu, ali pošto nemam niti jedan uređaj ne mogu ništa potvrditi kako to radi. Što se iOSa tiče postoji Tugboat (10$) koji radi sa komercijalnim Docker cloudom. Dakle cosntaineri koji su i cloudu se mogu koristiti i pokretati preko te aplikacije. Opet, nemam pretplatu u Cloudu pa ni to ne mogu 100% tvrditi, ali evidentno je da se Docker počeo širiti na sve desktop i mobilne platforme. Sa jakim hendheld uređajima mislim da će biti samo pitanje vrijeme kada će ovo postati još jednostavnije.
petros
04-03-2018 | 21:08
Hvala! 8) Kasnije mi je palo na pamet da je cijena nekog starijeg polovnog Androida takva da nema smisla nešto emulirati, jedino ono da je čovjek komotan pa želi sve na jednom uređaju.

Vikalica™

Zadnja poruka: pred 1 dan, 14 sati
  • JOHN: Honda CB650R
  • FiFi: Skoro sam ga jednom zamijenio za Bandita 1200 , ali sam ipak odustao.
  • Zdravac: ...ili Suzuki Bandit :)
  • Zdravac: E, taj motor je nekad bio moj san, da nije uletila yamaha, sigurno bih toga sad vozio :)
  • FiFi: Honda CB900F2 Hornet, 2002. Evo radim servis i nadam se registraciji prvi put nakon tri godine stajanje (djeca ti promijene raspored vožnje)
  • Riba: Problem je sto "sezona" u Irskoj trtaje tjedan dana. :-D Moram vidjeti ima li kakav nacin da ga registriram u Hr.
  • Zdravac: @ZeljkoB Odličan motor, takvi motori su baš po mom guštu! Lijep i ugodan za voziti.
  • Zdravac: @Riba Pa što čekaš, daj, zamjeni ulje, filtere i svječice, napuni bateriju, i lagano pranje. To će biti dovoljno, siguran sam! :)
  • Zdravac: Ajd, super, nisam jedini! Sad ide sezona, i gušt! Polako plan za moto trip na more...
  • ZeljkoB: Honda NC750X, ali sve manje vremena imam za voznje.....
  • Riba: Imam ja BMW 650CS, mozda ga reaktiviram nakon 10 godina stajanja u garazi. A imam i Vespu iz 1959, ta malo duze stoji. :)
  • Zdravac: Evo, ja ću prvi: YAMAHA XJ900 S Diversion, classic iz 1998., ide ko švicarski sat, čista mehanika, pouzdano do bola! :)
  • Zdravac: Jel imamo ovdje kolega ili kolegica, da voze motor? Ako da, koji?
  • zoranowsky: @air, u biti isti je pricnip, samo si sam sebi target :)
  • Air: Polako, polaku, kuda žurba, daj mi prvo link na to kako pročitati vlastite misli :)
  • smayoo: Za one koji ne znaju čitati misli - [link] :D
  • Borisone: Za one koji ne znaju čitati misli, koja je konfiguracija?
  • VanjusOS: pozdrav, treba li netko Mac mini M2, nekorišteno?
  • kupus: Ima takvih naravno. Iz mog skromnog iskustva takvi su u manjini.
  • smayoo: većina online trgovaca odbija slati na poste restante pa čak i na poštanski pretinac
  • kupus: zasto na osobnu adresu*
  • kupus: Zasto na adresu? Naruci na adresu postanskog ureda, tamo ce te cekat
  • drlovric: Imamo li koga iz Zupanje na forumu da bih mogao naruciti paket na njegovu adresu? :)
  • ecvis17: ok, tnx
  • smayoo: Piši u forum
  • ecvis17: pozdrav svima, imam stari MBP koji maksimalno moze voziti BigSur ... malo nisam vise u toku, gdje se danas mogu pronaci Combo installeri? Tnx
  • cariblanco: Čekao je da Hajduk osvoji prvenstvo i na kraju je odustao ;)
  • Yonkis: Od sada ćemo mjeriti vrijeme pre-JM and post-JM time
  • JOHN: Ako je vjerovao, neka mu dragi Bog pomogne i uzme sebi. Ako nije, opet nema veze……sve u svemu mislim da je živio dobar život!
  • smayoo: Ljudi... ode nam Joža Manolić... Nije šala.
  • accom: ne nadjem...
  • accom: jel postoji tema "must have apps"?
  • Riba: Vjerojtano koliko je Apple mapa detaljna.
  • Yonkis: Ili da otvorim temu u forumu?
  • Yonkis: Jedna osoba dok je bila u Beču, mogao sam vidjeti njenu lokaciju točno na kojem je katu i u kojem dijelu zgrade je bila (iPhone 14 u pitanju). Zna li netko koji su preduvjeti za takvo točno lociranje jer u Hrvatskoj to još nisam nigdje doživio? Vidim lokaciju ali ne u 3D.
  • m@xym: Uostalom, palčevi su na ovom forumu odavno prestali biti relevantni, a nama koji smo redovito ovdje niti ne trebaju da bi smo znali kakav je tko.
  • m@xym: Nerviraj se samo zbog onih koji su ti bitni, a nebitne ignoriraj, inače ćeš ostati bez živaca.
  • Vanjuška: Nema nervoze m@xym, ali da javno prozovem malog žapčića da bog sve vidi i sve zna :D
  • smayoo: Ja nemam.
  • zvone: Servisom naime...
  • zvone: ljudi ima li tko iskustva sa sercisom iklinika?
  • m@xym: Čemu nervoza zbog palčeva?! Evo ti još jedna gore ako te to baš toliko muči.
  • Vanjuška: LOL, puknem post i vidim 1 pozitivan palac gore, a imao sam ih 10 nakon onog Tinovog pushanja. Kaj je Žabac/Jura, opet me imaš na piku? :D
  • Kloba: Predizborna škola Željka Pervana [link]
  • Yonkis: Najljepše je kad ostane u “obitelji” :)
  • imjasminh: Mobitel prodan useru s Jabučnjaka :)
  • Zdravac: :)
  • Zdravac: Jel zna netko bez googlea odakle to?
  • Zdravac: ...Galebi, oj beli tići, poletite dole k jugu, ter moju pozdravite majku...
  • Gjuroo: Moj talent za poeziju nije skriven :)

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Novo na Jabučnjaku

Teme

Poruke

Anketa

Kupujete li profesionalni Mac?

Čekam novi modularni Mac Pro - 48.5%
Novac nije problem, kupujem iMac Pro - 0.7%
Kupujem Valjak, baš je lijep i tih! - 0%
Kupujem polovni Mac Pro tower - 11.8%
Nadogradit ću postojeći Mac Pro tower - 2.9%
Običan iMac 27" mi je dovoljan za posao - 5.9%
Skromnih sam potreba, Mac mini je zakon! - 7.4%
Radim na terenu, mora biti MacBook Pro - 3.7%
Ne diram ništa, stari Mac služi me odlično - 10.3%
Kupujem PC kantu i prelazim na Windowse! - 8.8%

Ukupno glasova: 136
Anketa je završena dana: 08 Svi 2018 - 12:17
Page Speed 1.03 Seconds

Provided by iJoomla SEO