Konténerizáció vizsga referencia - tartalomjegyzék
Gyakorlati Junior Rendszerüzemeltető vizsgához: Docker alapok, image, container, volume, network, Docker Compose és gyakorlati nginx, PostgreSQL, Node.js példák.
- Gyors parancsreferencia
- 1. Mi a konténerizáció?
- 2. Virtuális gépek vs konténerek
- 3. Előnyök és hátrányok
- 4. Docker architektúra
- 5. Image-ek
- 6. Konténerek
- 7. Registry-k
- 8. Docker Hub
- 9. Volumes
- 10. Hálózatok
- 11. Gyakori Docker parancsok
- 12. Docker Compose
- 13. Példa docker-compose.yml
- 14. Konténer életciklus
- 15. Gyakori vizsgakérdések
- 16. Gyors parancsreferencia
Gyors parancsreferencia
docker --version
docker ps
docker ps -a
docker images
docker pull nginx
docker run -d --name web -p 8080:80 nginx
docker logs web
docker exec -it web sh
docker stop web
docker start web
docker rm web
docker rmi nginx
docker volume ls
docker network ls
docker compose up -d
docker compose down
Vizsgán a leggyakoribb keresőszavak: image, container, Dockerfile, docker run, docker ps, docker logs, docker exec, volume, network, port mapping, docker compose.
1. Mi a konténerizáció?
A konténerizáció alkalmazások és függőségeik izolált futtatását jelenti közös operációs rendszer kernel felett. A konténer tartalmazza az alkalmazást, a szükséges csomagokat és konfigurációt, de nem tartalmaz teljes külön operációs rendszert úgy, mint egy virtuális gép.
Egyszerű kép
Fizikai vagy virtuális gép
Operációs rendszer
Docker Engine
nginx konténer
postgres konténer
node.js konténer
Konténerekkel ugyanaz az alkalmazás könnyebben futtatható fejlesztői gépen, tesztkörnyezetben és szerveren.
2. Virtuális gépek vs konténerek
| Szempont | Virtuális gép | Konténer |
|---|---|---|
| Izoláció | teljes vendég OS, erősebb izoláció | folyamat szintű izoláció közös kernellel |
| Indulási idő | lassabb, OS boot szükséges | gyors, gyakran másodpercek alatt indul |
| Erőforrásigény | nagyobb CPU/RAM/tárhely igény | kisebb overhead |
| OS kernel | minden VM saját kernelt futtat | host kernelét használja |
| Tipikus használat | teljes szerverek, eltérő OS-ek | alkalmazások és mikroszolgáltatások |
Konténer nem egyenlő virtuális géppel. A konténer könnyebb és gyorsabb, de a kernel közös a hosttal.
3. Előnyök és hátrányok
Előnyök
- Gyors indítás és leállítás.
- Egységes futtatási környezet fejlesztésben és szerveren.
- Kisebb erőforrásigény, mint a teljes VM-eknél.
- Egyszerűbb alkalmazáscsomagolás és terítés image-ekkel.
- Docker Compose segítségével több szolgáltatás együtt indítható.
Hátrányok
- Nem helyettesít minden esetben teljes virtuális gépet.
- Állapot nélküli működés miatt adatkezeléshez volume kell.
- Rossz image vagy jogosultság biztonsági kockázat lehet.
- Hálózati és port mapping hibák gyakoriak kezdőknél.
- Logolás, mentés és frissítés tudatos tervezést igényel.
4. Docker architektúra
| Komponens | Jelentés |
|---|---|
| Docker Client | a docker parancs, amivel utasításokat adsz |
| Docker Daemon | a háttérben futó szolgáltatás, amely konténereket és image-eket kezel |
| Docker Engine | a Docker kliens, daemon és futtatókörnyezet együtt |
| Image | futtatható sablon, amelyből konténer indul |
| Container | image-ből indított futó vagy leállított példány |
| Registry | image-ek tárolóhelye, például Docker Hub |
Folyamat
docker pull nginx
-> image letöltése registryből
docker run nginx
-> container indítása image-ből
5. Image-ek
Az image csak olvasható sablon, amely tartalmazza az alkalmazás futtatásához szükséges fájlokat, függőségeket és beállításokat.
docker images
docker pull nginx
docker pull postgres:16
docker pull node:20-alpine
docker rmi nginx
Tag
A tag verziót vagy változatot jelöl: nginx:latest, postgres:16, node:20-alpine.
Éles vagy vizsga reprodukálható környezetben jobb konkrét taget használni, mint mindig latest-et.
6. Konténerek
A container egy image-ből létrehozott futó vagy leállított példány. A konténer saját folyamatokkal, fájlrendszer-réteggel, hálózattal és környezeti változókkal rendelkezhet.
nginx konténer példa
docker run -d --name web -p 8080:80 nginx
docker ps
curl http://localhost:8080
docker logs web
docker stop web
docker rm web
Belépés konténerbe
docker exec -it web sh
docker exec -it web bash
Az -it interaktív terminált ad. Alpine alapú image-ekben gyakran sh van, nem bash.
7. Registry-k
A registry image-ek tárolására és megosztására szolgál. Innen töltesz le image-et, és ide tölthetsz fel saját image-et.
| Registry típus | Példa | Megjegyzés |
|---|---|---|
| Publikus | Docker Hub | sok nyilvános image |
| Privát | GitLab Container Registry, Harbor, ECR | vállalati saját image-ekhez |
docker login
docker pull nginx
docker tag sajat-app:1.0 felhasznalo/sajat-app:1.0
docker push felhasznalo/sajat-app:1.0
8. Docker Hub
A Docker Hub a legismertebb publikus Docker registry. Itt találhatók hivatalos image-ek, például nginx, postgres, node, ubuntu.
Vizsgán hasznos image-ek
| Image | Mire jó? | Példa |
|---|---|---|
| nginx | webszerver | docker run -p 8080:80 nginx |
| postgres | PostgreSQL adatbázis | POSTGRES_PASSWORD kell |
| node | Node.js futtatókörnyezet | node:20-alpine |
9. Volumes
A volume tartós adattárolásra való. Ha egy konténert törölsz, a konténer belső írható rétege elveszhet, de a volume megmarad.
Postgres volume példa
docker volume create pgdata
docker run -d --name pg `
-e POSTGRES_PASSWORD=Password123 `
-v pgdata:/var/lib/postgresql/data `
-p 5432:5432 `
postgres:16
docker volume ls
docker volume inspect pgdata
Bind mount példa nginxhez
mkdir -p ./html
echo "Vizsga nginx oldal" > ./html/index.html
docker run -d --name web -p 8080:80 -v "$PWD/html:/usr/share/nginx/html:ro" nginx
Adatbázis konténerhez szinte mindig kell volume, különben konténer törlésekor adatvesztés lehet.
10. Hálózatok
A Docker hálózatok konténerek közötti kommunikációt és port publikálást kezelnek. Alapból a konténerek bridge hálózaton futnak.
| Hálózat | Jelentés | Mikor hasznos? |
|---|---|---|
| bridge | alap konténerhálózat egy hoston | általános konténer-kommunikáció |
| host | a konténer a host hálózatát használja | speciális teljesítmény vagy hálózati igény |
| none | nincs hálózat | elszigetelt futtatás |
Saját bridge hálózat
docker network create vizsga-net
docker run -d --name web --network vizsga-net nginx
docker network ls
docker network inspect vizsga-net
Port mapping
docker run -d --name web -p 8080:80 nginx
Jelentés:
host port 8080 -> konténer port 80
böngésző: http://localhost:8080
11. Gyakori Docker parancsok
| Parancs | Jelentés |
|---|---|
docker ps | futó konténerek listája |
docker ps -a | összes konténer, leállítottak is |
docker images | helyi image-ek listája |
docker pull IMAGE | image letöltése registryből |
docker run | konténer létrehozása és indítása |
docker stop NAME | konténer leállítása |
docker start NAME | leállított konténer indítása |
docker rm NAME | konténer törlése |
docker rmi IMAGE | image törlése |
docker logs NAME | konténer naplója |
docker exec -it NAME sh | interaktív shell konténerben |
docker inspect NAME | részletes objektuminformáció |
12. Docker Compose
A Docker Compose több konténerből álló alkalmazás leírására és indítására szolgál YAML fájlban. Tipikus példa: webalkalmazás + adatbázis.
docker compose version
docker compose up -d
docker compose ps
docker compose logs
docker compose logs -f
docker compose down
docker compose down -v
docker compose down leállítja és törli a compose által létrehozott konténereket/hálózatot. A -v a volume-okat is törölheti, ezért adatbázisnál óvatosan.
13. Példa docker-compose.yml
Az alábbi példa három gyakori vizsgatémát kapcsol össze: nginx, PostgreSQL és Node.js. A Node.js alkalmazás a ./app mappából épül, az nginx publikus portja 8080.
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
depends_on:
- app
app:
image: node:20-alpine
working_dir: /app
volumes:
- ./app:/app
command: sh -c "npm install && node server.js"
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_DB: vizsga
POSTGRES_USER: vizsga
POSTGRES_PASSWORD: Password123
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
pgdata:
Indítás és teszt
docker compose up -d
docker compose ps
curl http://localhost:8080
curl http://localhost:3000
docker compose logs db
14. Konténer életciklus
| Állapot | Jelentés | Parancs |
|---|---|---|
| Created | konténer létrejött, de nem fut | docker create |
| Running | konténer fut | docker run, docker start |
| Paused | folyamatok szüneteltetve | docker pause |
| Stopped / Exited | konténer leállt | docker stop |
| Removed | konténer törölve | docker rm |
Tipikus életciklus
docker pull nginx
docker run -d --name web -p 8080:80 nginx
docker logs web
docker stop web
docker start web
docker rm -f web
15. Gyakori vizsgakérdések
| Kérdés | Rövid válasz |
|---|---|
| Mi a konténer? | Image-ből indított izolált alkalmazásfolyamat saját környezettel. |
| Mi az image? | Futtatható sablon, amelyből konténer indul. |
| Mi a registry? | Image-ek tárolóhelye, például Docker Hub. |
| Mi a Docker Hub? | Publikus Docker registry sok hivatalos image-dzsel. |
| Mire jó a volume? | Tartós adattárolásra konténer törlése után is. |
Mit jelent a -p 8080:80? | Host 8080 portja a konténer 80 portjára továbbít. |
| Mi a Docker Compose? | Több konténeres alkalmazás YAML alapú leírása és indítása. |
| Miért áll le rögtön egy konténer? | A fő folyamat befejeződött vagy hibával kilépett; nézd meg: docker logs. |
| Mi a különbség VM és konténer között? | VM teljes vendég OS-t futtat, konténer közös kernelt használ. |
16. Gyors parancsreferencia
nginx
docker run -d --name nginx-web -p 8080:80 nginx
curl http://localhost:8080
docker logs nginx-web
docker rm -f nginx-web
PostgreSQL
docker volume create pgdata
docker run -d --name postgres-db `
-e POSTGRES_PASSWORD=Password123 `
-e POSTGRES_DB=vizsga `
-e POSTGRES_USER=vizsga `
-v pgdata:/var/lib/postgresql/data `
-p 5432:5432 `
postgres:16
docker logs postgres-db
Node.js
docker run --rm -it node:20-alpine node --version
docker run --rm -it -v "$PWD/app:/app" -w /app node:20-alpine sh
npm install
node server.js
Takarítás
docker ps -a
docker rm -f CONTAINER_NAME
docker image prune
docker volume prune
docker network prune