Š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
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 kontejnerdocker stop TestContainer— zaustavi kontejnerdocker 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 Userdocker exec -it --user ContainerAdministrator TestContainer cmd— uđi kao adminexit— izlaz iz kontejner sesije (kontejner ostaje pokrenut)
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 korisnikanet user Administrator— detalji računa (je li enabled?)net localgroup— popis lokalnih grupanet user testuser pa$$word123 /ADD— dodaj korisnikanet localgroup "Power Users" testuser /addnet 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 -aonunutar kontejnera — TCP 5985 (WinRM) u LISTENING stanju- Uvijek izolirati od produkcijske mreže dok sigurnosne provjere nisu završene
- Filesystem provjera:
md MyFolder→exit→docker exec -it TestContainer cmd→Dir→ MyFolder POSTOJI
- Kontejner dijeli OS kernel s hostom (VM ima vlastiti kernel)
docker ps -a— prikaz SVIH kontejnera uključujući zaustavljenedocker 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
1. Koja je ključna razlika između Docker kontejnera i virtualne mašine?
2. Koja Docker naredba prikazuje popis SVIH kontejnera, uključujući zaustavljene?
3. Kreirao/la si kontejner s docker create. Status je "Created". Što to znači?
4. Pokrenuo/la si docker start MyFirstContainer. Status odmah postaje "Exited". Što je uzrok?
5. Koja naredba otvara interaktivnu cmd sesiju unutar već pokrenutog kontejnera TestContainer?
6. Uđeš u TestContainer s docker exec -it TestContainer cmd bez parametra --user. Koji korisnik si prijavljen?
7. Jesu li defaultne Windows Nano Server korisnički računi (Administrator) omogućeni u kontejneru?
8. Kako specificiraš lokalnu sliku pri kreiranju kontejnera (bez preuzimanja s interneta)?
9. Što se dogodi s podacima u kontejneru (npr. MyFolder koji si kreirao) kada izađeš s exit?
10. Koja Windows naredba unutar kontejnera prikazuje popis lokalnih korisnika?
11. Koja je defaultna mrežna konfiguracija Docker kontejnera na Windows?
12. Koji port je u LISTENING stanju unutar Windows Nano Server kontejnera (netstat -aon)?
13. Kako pravilno zaustaviš Docker kontejner?
14. Sigurnosni tim želi skenirati kontejner prije deployanja u produkciju. Koji je ispravan pristup?
15. Koja naredba gradi novu Docker sliku iz Dockerfile-a u trenutnom direktoriju i naziva je "my-image"?