Š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.

Docker arhitektura i životni ciklus kontejnera

HOST: MS10 (Windows Server 2019 — v1809) Docker Engine (servis) ipconfig → IP 10.x.x.x hostname → MS10 MyFirstContainer docker create → Created docker start → Exited (nema procesa!) TestContainer docker run -it → Up vEthernet IP: 172.x.x.x TCP 5985 LISTENING Users: User, ContainerAdmin filesystem: perzistentan (do docker rm) NAT mreža — ping host ✓ Ključne Docker naredbe docker images docker create --name X image:tag docker start X docker run -it --name X image:tag docker ps -a docker exec -it X cmd docker exec -it --user Admin X cmd docker stop X docker rm X ← BRISE filesystem!

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
  • Lab koristi Windows Nano Server 2019 image (tag :1809)

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/stop ne briše
  • Uvijek izoliraj od produkcijske mreže dok sigurnosne provjere nisu završene!

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; bez taga = latest (zahtijeva internet)

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 i 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. Unutar kontejnera: ver prikazuje detalje OS verzije.

Ulaz u pokrenuti kontejner (exec)

  • docker exec -it TestContainer cmd — uđi kao defaultni korisnik User
  • 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 — nema procesa), Up (pokrenut i aktivan), Exited (nema aktivnog procesa ili sesije). MyFirstContainer odmah prelazi u Exited nakon docker start jer nema interaktivne sesije ni procesa. docker ps -a prikazuje sve statuse.

Korisnici i grupe unutar kontejnera

Naredbe unutar kontejnera (Windows)

  • echo %username% — tko sam prijavljen (defaultno: User)
  • net user — popis lokalnih korisnika
  • net user Administrator — detalji računa (je li enabled?)
  • net localgroup — popis lokalnih grupa
  • net user testuser pa$$word123 /ADD — dodaj korisnika
  • net localgroup "Power Users" testuser /add
  • net user Administrator pa$$word123 /passwordchg:yes — promjena lozinke

Kontejner kao izolirano okruženje

  • Kontejner ima vlastite korisnike — User, ContainerAdministrator
  • Lokalni Administrator je inicijalno onemogućen u Nano Server kontejneru
  • Nema "Docker Administrators" grupe — to nije standardna Docker grupa
  • Filesystem se čuva između pokretanja i zaustavljanja
  • Podaci se brišu samo s docker rm
  • Promjena lozinki i dozvola = sigurnosna konfiguracija prije deployanja

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 (Ethernet) adapteru
  • Može pingati host i defaultni gateway (potvrđuje NAT mrežu)
  • netstat -aon unutar kontejnera — TCP 5985 (WinRM) u LISTENING stanju
  • Uvijek izolirati od produkcijske mreže dok sigurnosne provjere nisu završene
  • Filesystem provjera: md MyFolderexitdocker exec -it TestContainer cmdDirMyFolder POSTOJI
Na ispitu zapamti:
  • Kontejner dijeli OS kernel s hostom (VM ima vlastiti kernel)
  • docker ps -a — prikaz SVIH kontejnera uključujući zaustavljene
  • docker run -it = kreiranje + pokretanje + interaktivna sesija (sve u jednom)
  • docker exec -it --user ContainerAdministrator = ulaz kao admin korisnik
  • Filesystem se čuva između stop/start — briše se tek s docker rm
  • TCP 5985 = WinRM — uvijek LISTENING unutar Windows kontejnera
  • Status "Exited" odmah nakon start = nema interaktivnog procesa (normalno za create+start tok)
  • NAT mreža = kontejner može pingati host; produkcijska mreža = izolacija dok sigurnosne provjere ne završe

Kviz — 15 pitanja

0 / 15
Odgovori na pitanja da vidis 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. Pokrenuo/la si docker start MyFirstContainer. Status odmah postaje "Exited". Što je uzrok?

Kontejner postoji samo dok postoji aktivan proces unutar njega. docker create + docker start bez interaktivne sesije završava odmah (Exited). Za interaktivnost: docker run -it (stvara i odmah ulazi) ili docker exec -it (ulaz u pokrenuti).

5. 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.

6. Uđeš u TestContainer s docker exec -it TestContainer cmd bez parametra --user. Koji korisnik si prijavljen?

Bez --user parametra, defaultni korisnik pri exec je "User" (ne Administrator!). Za privilegirane radnje (kreiranje korisnika, promjena lozinki) koristi --user ContainerAdministrator. Provjera: echo %username% = User.

7. Jesu li defaultne Windows Nano Server korisnički računi (Administrator) omogućeni u kontejneru?

Provjera s net user Administrator pokazuje Account active: No. To je sigurnosna mjera — kontejner ne bi trebao imati aktivan local Administrator bez eksplicitne konfiguracije. ContainerAdministrator je poseban račun za privilegirani pristup.

8. 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.

9. Što se dogodi s podacima u kontejneru (npr. MyFolder koji si kreirao) kada izađeš s 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. U labu: MyFolder postoji i nakon exit + stop + restart.

10. 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.

11. 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.

12. Koji port je u LISTENING stanju unutar Windows Nano Server kontejnera (netstat -aon)?

TCP port 5985 je WinRM (Windows Remote Management) — defaultno aktivan u Windows kontejnerima za upravljanje. Ovo je bitno za sigurnost jer znači da je daljinski pristup potencijalno dostupan; treba konfigurirati autentifikaciju.

13. Kako pravilno zaustaviš Docker kontejner?

docker stop šalje SIGTERM signal 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.

14. Sigurnosni tim želi skenirati kontejner prije deployanja u produkciju. Koji je ispravan pristup?

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

15. 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.
0 / 15
Rijesi kviz da vidis rezultat.