Što je Docker kontejner

Kontejner je izolirana, lagana okolina za pokretanje aplikacija koja dijeli kernel hosta ali ima vlastiti filesystem, mrežne postavke, korisnike i procese. Za razliku od virtualnih mašina, kontejneri ne emuliraju cijeli hardver — lakši su i brže se pokreću.

Kontejner vs. Virtualna mašina

  • VM: vlastiti OS kernel, veći overhead, sporije pokretanje
  • Kontejner: dijeli host kernel, manji footprint, pokretanje u sekundama
  • Oba pružaju izolaciju ali na različitim razinama

Sigurnosne karakteristike kontejnera

  • Vlastiti hostname, IP adresa, korisnički računi
  • Vlastiti network stack (NAT prema hostu)
  • Izolirani filesystem — promjene ostaju unutar kontejnera
  • Podaci se brišu tek s docker rm — samo izlaz ne briše

Docker naredbe

Upravljanje slikama (images)

  • docker images — popis dostupnih slika
  • Slika = predložak za kontejner (npr. mcr.microsoft.com/windows/nanoserver:1809)
  • :1809 — tag koji specificira verziju lokalne slike

Upravljanje kontejnerima

  • docker create --name MyFirstContainer <image> — kreiraj (ali ne pokreni)
  • docker start MyFirstContainer — pokreni kontejner
  • docker stop TestContainer — zaustavi kontejner
  • docker ps -a — popis svih kontejnera (i zaustavljenih)
  • docker rm TestContainer — ukloni kontejner (briše filesystem)

Interaktivni kontejner (run)

docker run -it --name TestContainer mcr.microsoft.com/windows/nanoserver:1809

-it = interaktivni terminal. Kontejner se kreira, pokrene i odmah uđeš u cmd. Bez procesa/sesije → kontejner izlazi.

Ulaz u pokrenuti kontejner (exec)

  • docker exec -it TestContainer cmd — uđi u cmd sesiju
  • docker exec -it --user ContainerAdministrator TestContainer cmd — uđi kao admin
  • exit — izlaz iz kontejner sesije (kontejner ostaje pokrenut)
Statusi kontejnera: Created (kreiran, nije pokrenut), Up (pokrenut), Exited (zaustavio se — ili nema procesa ili ga je netko zaustavio). docker ps -a prikazuje sve statuse.

Korisnici i grupe unutar kontejnera

Naredbe unutar kontejnera (Windows)

  • echo %username% — tko sam prijavljen
  • net user — popis lokalnih korisnika
  • net user Administrator — detalji o računu
  • net localgroup — popis lokalnih grupa
  • net user testuser pa$$word123 /ADD — dodaj korisnika
  • net localgroup "Power Users" testuser /add

Kontejner kao izolirano okruženje

  • Kontejner ima vlastite korisnike (ContainerAdministrator, Users)
  • Promjene korisnika ostaju u kontejneru dok se ne ukloni
  • Filesystem se čuva između pokretanja i zaustavljanja
  • Podaci se brišu samo s docker rm
  • Bitno: konfiguriraj sigurnost PRIJE deployanja u produkcijsku mrežu

Mrežna izolacija kontejnera

Po defaultu, Docker kontejneri koriste NAT mrežu — mogu komunicirati s hostom i međusobno, ali su izolirani od šire mreže.

  • Kontejner ima vlastitu IP adresu (na vEthernet adapteru)
  • Može pingati host i defaultni gateway
  • netstat -aon unutar kontejnera — prikaz listening portova
  • TCP 5985 (WinRM) tipično je u LISTENING stanju
  • Uvijek izolirati od produkcijske mreže dok sigurnosne provjere nisu završene

Kviz — 12 pitanja

0 / 12
Odgovori na pitanja da vidiš rezultat.

1. Koja je ključna razlika između Docker kontejnera i virtualne mašine?

Kontejner dijeli OS kernel s hostom — što ga čini lakšim i bržim. VM emulira kompletan hardver i ima vlastiti kernel — teži je ali pruža veću izolaciju. Oba imaju mrežni pristup.

2. Koja Docker naredba prikazuje popis SVIH kontejnera, uključujući zaustavljene?

docker ps -a prikazuje sve kontejnere i njihove statuse (Created, Up, Exited). Bez -a prikazuje samo pokrenute. docker images prikazuje dostupne slike, ne kontejnere.

3. Kreirao/la si kontejner s docker create. Status je "Created". Što to znači?

docker create samo kreira kontejner na disku. Za pokretanje trebaš docker start. Alternativa je docker run koji kreira i odmah pokreće kontejner (s -it opcijom i ulazak u interaktivnu sesiju).

4. Koja naredba otvara interaktivnu cmd sesiju unutar već pokrenutog kontejnera TestContainer?

docker exec izvršava naredbu unutar POKRENUTOG kontejnera. -it = interaktivni terminal. docker run bi kreirao novi kontejner. Za ulaz kao admin: docker exec -it --user ContainerAdministrator TestContainer cmd.

5. Kako specificiraš lokalnu sliku pri kreiranju kontejnera (bez preuzimanja s interneta)?

docker images prikazuje dostupne lokalne slike s njihovim tagovima. Specificiranjem taga (npr. :1809) Docker koristi lokalnu sliku i ne kontaktira internet registry. :latest može pokrenuti preuzimanje ako lokalna verzija nije ažurna.

6. Što se dogodi s podacima u kontejneru (npr. MyFolder koji si kreirao) kada izađeš s naredbom exit?

exit samo zatvara cmd sesiju — kontejner (i njegovi podaci) ostaju. docker stop zaustavlja kontejner ali čuva podatke. Jedino docker rm briše kontejner i njegov filesystem.

7. Koja Windows naredba unutar kontejnera prikazuje popis lokalnih korisnika?

net user prikazuje lokalne korisnike na Windows sustavu (uključujući kontejnere). net user korisnik prikazuje detalje o specifičnom korisniku. net localgroup prikazuje lokalne grupe.

8. Koja je defaultna mrežna konfiguracija Docker kontejnera na Windows?

Defaultna Docker mreža na Windows je NAT — kontejner dobiva vlastitu IP adresu na internoj mreži, može pingati host i gateway. Host-ov vEthernet adapter spaja se na NAT mrežu. Za produkciju — izoliraj kontejner od produkcijske mreže dok ne završiš sigurnosne provjere.

9. Kako pravilno zaustaviš Docker kontejner?

docker stop šalje SIGTERM signál procesu u kontejneru i daje mu 10 sekundi za čisti završetak (zatim SIGKILL). Pravilno zaustavljanje sprječava korupciju podataka. Zatvaranje terminala ne zaustavlja kontejner — on nastavlja raditi u pozadini.

10. Sigurnosni tim želi skenirati kontejner prije deployanja u produkciju. Što se mora napraviti?

Kontejneri imaju vlastite korisnike, lozinke, mrežne postavke — sve to mora biti konfigurirano sigurno PRIJE deployanja. Defaultne postavke (kao what user admin bez lozinke) mogu biti ranjivost. Izolacija od produkcijske mreže do završetka provjera.

11. Koja naredba gradi novu Docker sliku iz Dockerfile-a u trenutnom direktoriju i naziva je "my-image"?

docker build -t ime-slike . — gradi sliku koristeći Dockerfile u trenutnom direktoriju (.). -t postavlja tag/ime slike. Nakon buildanja, slika se pojavljuje u docker images listi.

12. Kontejner TestContainer je pokrenut. Unutar kontejnera pokrenuš ipconfig i vidiš drugačiju IP adresu od hosta. Što to pokazuje?

Svaki kontejner dobiva vlastitu IP adresu na Docker NAT mreži. To je očekivano i potvrda mrežne izolacije — kontejner se ponaša kao zasebni sustav s vlastitim mrežnim stackom, različitim od hosta.
0 / 12
Riješi kviz da vidiš rezultat.