Kako Docker radi
Bez Dockera aplikacija zavisi od onoga što je instalirano na serveru: verzije PHP-a, Node.js-a, biblioteka i podešavanja. Ako se na laptopu i serveru razlikuju, nastaje poznato „kod mene radi“. Docker taj problem rešava tako što aplikaciju i sve od čega zavisi spakuje u image, a server samo pokreće taj image.
Docker koristi mogućnosti Linux jezgra (namespaces i cgroups) da svakom kontejneru da sopstveni pogled na fajlove, mrežu i procese i da mu ograniči procesor i memoriju. Kontejner se zato ponaša kao mali zaseban server, a pokreće se za sekundu.
Image, kontejner i volumen
| Pojam | Šta je | Primer |
|---|---|---|
| Image | šablon samo za čitanje sa aplikacijom i bibliotekama | nginx:1.27, postgres:16, n8nio/n8n |
| Kontejner | pokrenuta instanca image-a | web server koji sluša na portu 80 |
| Volumen | trajni prostor za podatke van kontejnera | fajlovi baze, otpremljene slike |
| Dockerfile | recept po kome se pravi sopstveni image | FROM node:22, COPY, RUN npm ci |
| Registar | mesto sa koga se preuzimaju image-i | Docker Hub, GitHub Container Registry |
Kad obrišete kontejner, nestaje sve što nije u volumenu. Zato baze i otpremljeni fajlovi uvek idu u volumen, a volumene uključite u backup servera (na VPS-u je backup dodatna usluga).
Kontejner ili virtuelna mašina
| Docker kontejner | Virtuelna mašina (VPS) | |
|---|---|---|
| Šta deli | jezgro operativnog sistema domaćina | samo hardver; ima svoje jezgro |
| Pokretanje | sekunda ili dve | desetine sekundi do minut |
| Veličina | desetine do stotine MB | nekoliko GB |
| Izolacija | dobra, ali deli jezgro | jača, potpuno odvojen sistem |
| Tipična upotreba | aplikacije i servisi | ceo server sa više aplikacija |
Ovo nije izbor „ili-ili“: najčešće se Docker pokreće upravo na virtuelnoj mašini, odnosno na VPS-u. Razliku između vrsta servera objasnili smo na stranici šta je VPS.
Docker Compose
Aplikacija retko ima samo jedan deo: tu su sajt, baza i keš. Docker Compose ih opisuje u jednom fajlu i pokreće zajedno, sa zajedničkom mrežom i volumenima. Primer za WordPress sa bazom:
services:
db:
image: mariadb:11
restart: unless-stopped
environment:
MARIADB_DATABASE: wordpress
MARIADB_USER: wp
MARIADB_PASSWORD: promenite-lozinku
MARIADB_RANDOM_ROOT_PASSWORD: "1"
volumes:
- db:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: unless-stopped
depends_on: [db]
ports:
- "127.0.0.1:8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: promenite-lozinku
volumes:
- wp:/var/www/html
volumes:
db:
wp:Komanda docker compose up -d pokreće oba kontejnera, a docker compose down ih gasi bez brisanja volumena. Za običan WordPress sajt Docker nije potreban: na WordPress hostingu radi bez ikakvog održavanja servera.
Zašto Docker traži VPS
Docker pokreće sistemski servis i koristi funkcije jezgra koje traže root pristup. Deljeni hosting to ne dozvoljava, jer bi jedan korisnik mogao da utiče na sve ostale na istom serveru. Zato Docker radi na VPS serveru ili namenskom serveru, gde ste vi administrator.
- Za nekoliko manjih kontejnera (n8n, Uptime Kuma, mala baza) dovoljan je VPS sa 4 GB RAM-a.
- Za aplikaciju sa bazom i više korisnika, ili za lokalne AI modele, uzmite 8 do 16 GB RAM-a.
- Instalacija korak po korak je u vodiču kako instalirati Docker na VPS, a primeri u vodičima za n8n i Ollamu.