Šta je Docker? Kontejneri objašnjeni za nekodere
Docker je alat koji pakuje aplikaciju zajedno sa svime što joj treba za rad (ispravnu verziju jezika, biblioteke, sistemske alate i postavke) u standardnu jedinicu zvanu kontejner. Kontejner radi na isti način na laptopu programera, testnom serveru ili cloud hostu, što okončava klasični problem „ali radilo je na mom računaru“. Recept za pravljenje kontejnera je kratak tekstualni fajl zvan Dockerfile.
Zašto je Docker važan kad gradite uz AI
Ako vaša aplikacija ima backend, odnosno API u Pythonu, Node-u, C# ili Javi, mora raditi negdje gdje je instalirano upravo pravo softversko okruženje. Docker je najčešći način da se to ponovi.
- Deploy backenda. Mnogi hostovi, uključujući Mythex, deployuju backende tako što prave kontejner iz Dockerfile-a. U Mythexu, kada zatražite „C# Web API“ ili „Java backend“, dobijate aplikaciju plus Dockerfile, a objava gradi sliku i deployuje je (API backendi).
- Napuštanje platforme. Ako izvezete aplikaciju izgrađenu uz AI, Dockerfile znatno olakšava njeno pokretanje na drugom hostu. Pogledajte kako izvesti i samostalno hostovati aplikaciju izgrađenu uz AI.
- Rad s programerima. Programer koji se pridruži vašem projektu može pokrenuti cijelu aplikaciju jednom ili dvije komande, umjesto da provede dan instalirajući stvari.
Svakodnevna analogija: brodski kontejneri
Prije standardnih brodskih kontejnera, teret se utovarivao komad po komad (vreće, bačve, sanduci), a svaka luka je to radila drugačije. Standardni čelični kontejner promijenio je to: spakujete ga jednom, a bilo koji brod, dizalica, voz ili kamion ga može prevesti, bez obzira šta je unutra.
Docker radi isto za softver:
- Dockerfile je lista pakovanja i uputstva.
- Slika je zapečaćen, spakovan kontejner.
- Pokrenuti kontejner je ta kutija u radu, ovdje na serveru.
- Docker Engine je dizalica i brod: softver na serveru koji zna kako pokrenuti bilo koji kontejner.
Kako Docker radi
| Dio | Šta je |
|---|---|
| Dockerfile | Tekstualni fajl s korak-po-korak uputstvima za pravljenje slike. |
| Slika (image) | Paket samo za čitanje: osnove operativnog sistema, runtime, biblioteke i vaš kod. |
| Kontejner | Pokrenuta instanca slike, izolovana od drugih aplikacija na istoj mašini. |
| Registar | Mjesto za čuvanje i dijeljenje slika, poput Docker Huba ili registra cloud provajdera. |
| Docker Engine | Pozadinski servis koji pravi slike i pokreće kontejnere. Besplatan i otvorenog koda. |
| Docker Desktop | Aplikacija za Mac, Windows i Linux koja spaja engine s grafičkim interfejsom. |
Kontejneri naspram virtuelnih mašina: virtuelna mašina se pretvara da je cijeli zaseban računar s vlastitim operativnim sistemom, pa je teška i sporo se pokreće. Kontejner dijeli kernel operativnog sistema domaćina i izoluje samo aplikaciju i njene fajlove, pa se obično pokrene za nekoliko sekundi i troši mnogo manje memorije. Mnogo kontejnera može raditi jedan pored drugog na istom serveru.
Praktičan primjer: mali Python API
Recimo da je vaš AI alat napravio Python FastAPI backend za aplikaciju za rezervacije. Dockerfile bi mogao izgledati ovako:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Linija po liniju:
| Linija | Šta radi |
|---|---|
FROM python:3.12-slim | Počinje od zvanične slike koja već ima Python 3.12 instaliran. |
WORKDIR /app | Radi unutar foldera /app u kontejneru. |
COPY requirements.txt . i RUN pip install ... | Kopira listu biblioteka i instalira ih. |
COPY . . | Kopira kod same aplikacije. |
EXPOSE 8000 | Bilježi da aplikacija sluša na portu 8000. |
CMD [...] | Komanda koja pokreće web server kada se kontejner pokrene. |
Jednostavno rečeno: „Počni s Pythonom 3.12. Instaliraj biblioteke navedene u requirements.txt. Kopiraj kod. Pokreni web server na portu 8000.“
Programer (ili hosting platforma) zatim pokreće dvije komande:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
Prva gradi sliku i imenuje je booking-api. Druga pokreće kontejner i povezuje port 8000 na mašini s portom 8000 unutar kontejnera. API sada radi na isti način kao na bilo kojem serveru koji ima Docker.
Primijetite šta nije u slici: lozinke i API ključevi. Oni se prosljeđuju kada se kontejner pokrene, kao environment varijable, pa ista slika može raditi u testiranju i produkciji s različitim postavkama.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Kontejner | Izolovan, pokrenut paket aplikacije i njenih zavisnosti. |
| Slika (image) | Šablon iz kojeg se kontejner pokreće. |
| Bazna slika | Polazna tačka u FROM liniji Dockerfile-a, poput python:3.12-slim ili node:22. |
| Sloj (layer) | Svaki korak Dockerfile-a dodaje keširani sloj, što ubrzava ponovna gradnje. |
| Mapiranje porta | Povezivanje porta na domaćinu s portom unutar kontejnera. |
| Volume | Pohrana koja preživi kada se kontejner zamijeni. Sami kontejneri su potrošni. |
| Docker Compose | Fajl koji opisuje više kontejnera koji rade zajedno, poput API-ja i baze podataka. |
| Kubernetes | Sistem za pokretanje mnogo kontejnera na mnogo servera. Većina malih aplikacija ga ne treba. |
Česte zablude
- „Docker je virtuelna mašina.“ Lakši je: kontejneri dijele kernel domaćina.
- „Podaci sačuvani unutar kontejnera su sigurni.“ Kontejneri su namijenjeni da se odbace i zamijene. Sve što mora trajati, poput korisničkih podataka i uploadovanih fajlova, pripada bazi podataka, fajl pohrani ili volumenu.
- „Stavljanje tajni u Dockerfile je u redu jer je privatan.“ Slike se dijele i guraju u registre. Prosljeđujte tajne u trenutku pokretanja.
- „Docker čini aplikaciju sigurnom.“ Izolacija pomaže, ali kontejner s zastarjelim softverom i slabim postavkama je i dalje ranjiv.
- „Svaka aplikacija treba Docker.“ Statički sajt ili jednostavan frontend se obično hostuje kao obični fajlovi, bez ikakvog kontejnera.
- „Docker Desktop je besplatan za sve.“ Engine je besplatan; Docker Desktop zahtijeva plaćenu pretplatu za veće kompanije, prema Dockerovim uslovima.
Šta tražiti od vašeg AI alata za izradu
- „Treba li ova aplikacija Dockerfile? Ako da, objasni svaku liniju običnim jezikom.“
- „Koristi malu, zvaničnu baznu sliku i zakači verziju jezika.“
- „Drži tajne van slike. Čitaj ih iz environment varijabli u trenutku pokretanja.“
- „Pobrini se da se uploadovani fajlovi i podaci čuvaju u bazi podataka ili fajl pohrani, a ne unutar kontejnera.“
- „Dodaj Docker Compose fajl da programer može pokrenuti frontend, API i bazu lokalno jednom komandom.“
- „Dodaj health-check endpoint da host može provjeriti je li API aktivan.“
Docker u Mythexu
Ne morate instalirati niti pokretati Docker da biste koristili Mythex. Vaš projekat radi u privatnom cloud sandbox okruženju, a kada zatražite backend koji treba kontejner, na primjer C#, Javu ili prilagođeni Node ili Python servis, Mythex napiše aplikaciju plus Dockerfile, pregleda je u sandboxu i deployuje kada objavite, bez ikakvog postavljanja hostinga (kako se bira tehnologija). Na Pro planu možete izvesti projekat ili ga sinhronizovati s GitHubom i ponijeti Dockerfile sa sobom. Za to kako se backendi i frontendi uklapaju, pogledajte frontend vs backend.
Pitanja
Šta je Docker jednostavnim riječima?
Docker je alat koji pakuje aplikaciju zajedno sa svim što joj treba za rad, uključujući programsko okruženje, biblioteke i postavke, u standardnu jedinicu zvanu kontejner. Kontejner radi na isti način na laptopu, testnom serveru ili cloud hostu.
Koja je razlika između Docker slike i kontejnera?
Slika je spakovan šablon samo za čitanje: aplikacija i njene zavisnosti, napravljeni iz Dockerfile-a. Kontejner je pokrenuta kopija te slike. Iz jedne slike možete pokrenuti mnogo kontejnera.
Je li Docker virtuelna mašina?
Nije. Virtuelna mašina emulira cijeli računar s vlastitim operativnim sistemom. Kontejneri dijele operativni sistem domaćina i izoluju samo aplikaciju, pa se brže pokreću i troše manje memorije.
Je li Docker besplatan?
Docker Engine, jezgro koje pokreće kontejnere, besplatan je i otvorenog koda. Od septembra 2026, Dockerovi uslovi kažu da je Docker Desktop besplatan za nekomercijalne projekte otvorenog koda i za kompanije s manje od 250 zaposlenih i manje od 10 miliona dolara godišnjeg prihoda; veće kompanije trebaju plaćenu pretplatu.
Treba li mi učiti Docker da bih gradio aplikaciju uz AI?
Obično ne. Mnogi AI alati za izradu brinu o kontejnerima umjesto vas. Korisno je znati šta je Dockerfile, da biste razumjeli kako je backend spakovan i da biste ga mogli pokrenuti ili hostovati drugdje ako izvezete aplikaciju.