Šta je Docker? Kontejneri objašnjeni za neprogramere
Docker je alat koji pakuje aplikaciju zajedno sa svim što joj treba za rad (pravu verziju jezika, biblioteke, sistemske alate i podešavanja) u standardnu jedinicu zvanu kontejner. Kontejner radi na isti način na razvojnom laptopu, test serveru ili cloud hostu, što rešava klasični problem „ali na mom računaru radi“. Recept za pravljenje kontejnera je kratak tekstualni fajl zvan Dockerfile.
Zašto je Docker važan kada praviš aplikaciju uz AI
Ako tvoja aplikacija ima backend, API u Python-u, Node-u, C#-u ili Javi, mora da radi negde gde je instaliran upravo pravi softver. Docker je najčešći način da to bude ponovljivo.
- Postavljanje backend-a. Mnoge platforme, uključujući Mythex, postavljaju backend tako što prave kontejner iz Dockerfile-a. U Mythex-u, kada zatražiš „C# Web API“ ili „Java backend“, dobijaš aplikaciju i Dockerfile, a objavljivanje pravi sliku i postavlja je (API backend-i).
- Napuštanje platforme. Ako izvezeš aplikaciju napravljenu uz AI, Dockerfile znatno olakšava pokretanje na drugom hostu. Pogledaj kako izvesti i samostalno hostovati aplikaciju napravljenu uz AI.
- Rad sa programerima. Programer koji se pridruži tvom projektu može da pokrene celu aplikaciju jednom ili dve komande, umesto da provede dan instalirajući stvari.
Svakodnevna analogija: brodski kontejneri
Pre standardnih brodskih kontejnera, teret se utovarao komad po komad: vreće, bačve, sanduci, a svaka luka je to radila na svoj način. Standardni čelični kontejner to je promenio: spakuj ga jednom, pa svaki brod, dizalica, voz ili kamion može da ga prenese, a da ne mari šta je unutra.
Docker radi isto za softver:
- Dockerfile je lista za pakovanje i uputstvo.
- Slika je zapečaćen, spakovan kontejner.
- Pokrenut kontejner je ta kutija stavljena u rad na brodu, ovde na serveru.
- Docker Engine je dizalica i brod: softver na serveru koji zna kako da pokrene bilo koji kontejner.
Kako Docker radi
| Deo | Šta je |
|---|---|
| Dockerfile | Tekstualni fajl sa korak-po-korak uputstvima za pravljenje slike. |
| Slika (image) | Paket samo za čitanje: osnovne delove operativnog sistema, runtime, biblioteke i tvoj kod. |
| Kontejner | Pokrenuta instanca slike, izolovana od drugih aplikacija na istoj mašini. |
| Registar | Mesto za čuvanje i deljenje slika, kao što su Docker Hub ili registar 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 sa grafičkim interfejsom. |
Kontejneri naspram virtuelnih mašina: virtuelna mašina se pretvara da je potpuno zaseban računar sa sopstvenim operativnim sistemom, pa je teška i sporo se pokreće. Kontejner deli jezgro 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 da radi jedan pored drugog na istom serveru.
Praktičan primer: mali Python API
Zamisli da je tvoj AI alat napravio Python FastAPI backend za aplikaciju za rezervacije. Dockerfile bi mogao da izgleda 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"]
Red po red:
| Red | Šta radi |
|---|---|
FROM python:3.12-slim | Kreće od zvanične slike koja već ima instaliran Python 3.12. |
WORKDIR /app | Radi u folderu /app unutar kontejnera. |
COPY requirements.txt . i RUN pip install ... | Kopira listu biblioteka i instalira ih. |
COPY . . | Kopira kod same aplikacije. |
EXPOSE 8000 | Beleži da aplikacija sluša na portu 8000. |
CMD [...] | Komanda koja pokreće web server kada se kontejner pokrene. |
Ukratko: „Kreni sa Python-om 3.12. Instaliraj biblioteke navedene u requirements.txt. Kopiraj kod. Pokreni web server na portu 8000.“
Razvojni programer (ili platforma za hosting) zatim pokreće dve komande:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
Prva pravi sliku i imenuje je booking-api. Druga pokreće kontejner i povezuje port 8000 na mašini sa portom 8000 unutar kontejnera. API sada radi, na isti način kao na svakom serveru koji ima Docker.
Primeti šta nije u slici: lozinke i API ključevi. Oni se prosleđuju kada se kontejner pokrene, kao promenljive okruženja, pa ista slika može da radi u testiranju i produkciji sa različitim podešavanjima.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Kontejner | Izolovan, pokrenut paket aplikacije i njenih zavisnosti. |
| Slika (image) | Šablon iz kojeg se kontejner pokreće. |
| Osnovna slika (base image) | Polazna tačka u FROM redu Dockerfile-a, kao što su python:3.12-slim ili node:22. |
| Sloj (layer) | Svaki korak Dockerfile-a dodaje keširani sloj, što ubrzava ponovna gradnja. |
| Mapiranje porta | Povezivanje porta na domaćinu sa portom unutar kontejnera. |
| Volumen | Skladište koje preživljava kada se kontejner zameni. Sami kontejneri su za jednokratnu upotrebu. |
| Docker Compose | Fajl koji opisuje više kontejnera koji rade zajedno, na primer API i bazu. |
| Kubernetes | Sistem za pokretanje mnogo kontejnera na mnogo servera. Većini malih aplikacija nije potreban. |
Česte zablude
- „Docker je virtuelna mašina.“ Lakši je: kontejneri dele jezgro domaćina.
- „Podaci sačuvani unutar kontejnera su bezbedni.“ Kontejneri su namenjeni da se odbace i zamene. Sve što mora da opstane, kao što su podaci korisnika ili otpremljeni fajlovi, pripada bazi, skladištu fajlova ili volumenu.
- „Stavljanje tajni u Dockerfile je u redu jer je privatno.“ Slike se dele i gurnu u registre. Prosleđuj tajne u vreme izvršavanja.
- „Docker čini aplikaciju bezbednom.“ Izolacija pomaže, ali kontejner sa zastarelim softverom i slabim podešavanjima je i dalje ranjiv.
- „Svaka aplikacija treba Docker.“ Statički sajt ili jednostavan frontend obično se hostuje kao obični fajlovi, bez kontejnera.
- „Docker Desktop je besplatan za sve.“ Engine je besplatan; Docker Desktop zahteva plaćenu pretplatu za veće kompanije, prema Dockerovim uslovima.
Šta tražiti od svog AI alata
- „Da li ova aplikacija treba Dockerfile? Ako da, objasni svaki red jednostavnim jezikom.“
- „Koristi malu, zvaničnu osnovnu sliku i zakači verziju jezika.“
- „Drži tajne van slike. Čitaj ih iz promenljivih okruženja pri izvršavanju.“
- „Pobrini se da se otpremljeni fajlovi i podaci čuvaju u bazi ili skladištu fajlova, a ne unutar kontejnera.“
- „Dodaj Docker Compose fajl da programer može da pokrene frontend, API i bazu lokalno jednom komandom.“
- „Dodaj endpoint za proveru zdravlja da domaćin može da vidi da li je API živ.“
Docker u Mythex-u
Ne moraš da instaliraš ni pokrećeš Docker da bi koristio Mythex. Tvoj projekat radi u privatnom cloud sandbox-u, a kada zatražiš backend koji zahteva kontejner, na primer C#, Java ili prilagođeni Node ili Python servis, Mythex napiše aplikaciju i Dockerfile, prikaže je u sandbox-u i postavi je kada objaviš, bez ikakvog podešavanja hostinga (kako se bira tehnologija). Na Pro planu možeš da izvezeš projekat ili ga sinhronizuješ sa GitHub-om i poneseš Dockerfile sa sobom. Za to kako se backend i frontend uklapaju, pogledaj frontend naspram backend-a.
Pitanja
Šta je Docker jednostavnim rečima?
Docker je alat koji pakuje aplikaciju zajedno sa svim što joj treba za rad (runtime jezika, biblioteke i podešavanja) u standardnu jedinicu zvanu kontejner. Kontejner radi na isti način na laptopu, test 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žeš da pokreneš mnogo kontejnera.
Da li je Docker virtuelna mašina?
Nije. Virtuelna mašina emulira ceo računar sa sopstvenim operativnim sistemom. Kontejneri dele jezgro operativnog sistema domaćina i izoluju samo aplikaciju, pa se brže pokreću i troše manje memorije.
Da li je 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 sa manje od 250 zaposlenih i manje od 10 miliona dolara godišnjeg prihoda; veće kompanije moraju da plaćaju pretplatu.
Da li moram da učim Docker da bih pravio aplikaciju uz AI?
Obično ne. Mnogi AI alati za pravljenje aplikacija brinu o kontejnerima umesto tebe. Korisno je znati šta je Dockerfile, da razumeš kako se backend pakuje i da možeš aplikaciju da pokreneš ili hostuješ negde drugde ako je izvezeš.