Š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 kontejnerdocker stop TestContainer— zaustavi kontejnerdocker 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 sesijudocker exec -it --user ContainerAdministrator TestContainer cmd— uđi kao adminexit— izlaz iz kontejner sesije (kontejner ostaje pokrenut)
docker ps -a prikazuje sve statuse.
Korisnici i grupe unutar kontejnera
Naredbe unutar kontejnera (Windows)
echo %username%— tko sam prijavljennet user— popis lokalnih korisnikanet user Administrator— detalji o račununet localgroup— popis lokalnih grupanet user testuser pa$$word123 /ADD— dodaj korisnikanet 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 -aonunutar 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
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. Koja naredba otvara interaktivnu cmd sesiju unutar već pokrenutog kontejnera TestContainer?
5. Kako specificiraš lokalnu sliku pri kreiranju kontejnera (bez preuzimanja s interneta)?
6. Što se dogodi s podacima u kontejneru (npr. MyFolder koji si kreirao) kada izađeš s naredbom exit?
7. Koja Windows naredba unutar kontejnera prikazuje popis lokalnih korisnika?
8. Koja je defaultna mrežna konfiguracija Docker kontejnera na Windows?
9. Kako pravilno zaustaviš Docker kontejner?
10. Sigurnosni tim želi skenirati kontejner prije deployanja u produkciju. Što se mora napraviti?
11. Koja naredba gradi novu Docker sliku iz Dockerfile-a u trenutnom direktoriju i naziva je "my-image"?
12. Kontejner TestContainer je pokrenut. Unutar kontejnera pokrenuš ipconfig i vidiš drugačiju IP adresu od hosta. Što to pokazuje?