Docker alapfogalmak: a kisszótár, amire szükséged van
Image, konténer, Dockerfile, registry, volume, Compose, tag — a legfontosabb Docker fogalmak egyszerű, magyar nyelvű magyarázata egy helyen.
Amikor elkezdesz a Dockerrel foglalkozni, hamar rád zúdul egy egész szakszótárnyi új fogalom: image, konténer, registry, volume, tag, Compose. Ezek nélkül nehéz követni a dokumentációt és a tutorialokat. Ebben a cikkben egy helyen, magyarul, érthetően összeszedtük a legfontosabb Docker fogalmakat, mindegyikhez rövid magyarázattal és egy apró példával. Tedd a könyvjelződ közé, hogy bármikor visszanézhesd!
Image és réteg
Image (kép)
Az image egy csak olvasható sablon, amely tartalmazza az alkalmazásodat és minden függőségét. Ebből indulnak a konténerek. Olyan, mint egy telepítőcsomag vagy egy recept.
docker pull node:22-alpine
Layer (réteg)
Az image-ek rétegekből épülnek fel. A Dockerfile minden utasítása egy új réteget hoz létre, és ezek egymásra épülnek. A rétegek megoszthatók az image-ek között, és gyorsítótárazhatók, ezért lesz a build sokkal gyorsabb másodjára.
Konténer
A konténer egy image futó példánya: egy élő, izolált folyamat. Egyetlen image-ből sok konténert indíthatsz. Ha az image a recept, a konténer a belőle elkészített étel.
docker run -d --name app node:22-alpine
Dockerfile és build context
Dockerfile
A Dockerfile egy szöveges fájl, amely lépésről lépésre leírja, hogyan épüljön fel az image-ed. Itt adod meg az alapimage-et, a fájlok másolását, a parancsokat. A részletes elkészítését a Dockerfile írása lépésről lépésre cikkben járjuk körül.
Build context
A build context az a könyvtár (és annak tartalma), amelyet a docker build parancsnak átadsz. A Docker ezeket a fájlokat éri el a build során. Érdemes kicsinek tartani, és a .dockerignore fájllal kihagyni a felesleges dolgokat.
docker build -t sajat-app:1.0 .
💡 Tipp: A
.a fenti parancsban az aktuális könyvtárat jelenti build contextként. Ha ide véletlenül belekerül anode_modulesvagy a.git, akkor lassú lesz a build, ezért használj.dockerignorefájlt.
Registry, Docker Hub és tag
Registry
A registry egy tároló, ahol az image-eket tárolják és megosztják. Innen tudsz image-et letölteni (pull) és ide tudsz feltölteni (push). Lehet nyilvános vagy privát.
Docker Hub
A Docker Hub a legnagyobb nyilvános registry, a Docker hivatalos image-tárolója. Itt találod a hivatalos nginx, postgres, node és számtalan más image-et.
Tag (címke)
A tag egy image konkrét verzióját azonosítja. A node:22-alpine esetében a node a név, a 22-alpine a tag. Ha nem adsz meg tagot, a Docker a latest-et használja.
docker pull postgres:16
docker tag sajat-app:1.0 sajat-app:legujabb
Volume és bind mount
A konténerek alapból „elfelejtenek” mindent, ha törlöd őket. Az adatmegőrzéshez kétféle megoldás van.
Volume
A volume a Docker által kezelt, perzisztens tárhely. Ideális adatbázisok adatainak tárolására. A Docker felel a helyért és az életciklusáért.
docker volume create db-adat
docker run -v db-adat:/var/lib/postgresql/data postgres:16
Bind mount
A bind mount a gazdagép egy konkrét könyvtárát csatolja be a konténerbe. Fejlesztéskor hasznos, mert a kódváltozásokat azonnal látja a konténer.
docker run -v $(pwd)/src:/app/src node:22-alpine
Network (hálózat)
A Docker hálózatok teszik lehetővé, hogy a konténerek kommunikáljanak egymással és a külvilággal. Ha több konténert ugyanarra a hálózatra teszel, a nevükön keresztül elérik egymást, nem kell IP-címekkel bajlódnod.
docker network create app-halo
docker run --network app-halo --name db postgres:16
Port mapping (port-leképezés)
A konténerben futó alkalmazás portját a -p kapcsolóval teszed elérhetővé a gazdagépen. A formátum gazdagép_port:konténer_port.
docker run -p 8080:80 nginx
Ez a gazdagép 8080-as portját a konténer 80-as portjára irányítja, így a böngészőben a http://localhost:8080 címen éred el.
Docker Compose
A Docker Compose egy eszköz, amellyel egyetlen YAML fájlban (compose.yaml) definiálhatsz több konténert és azok kapcsolatait, majd egyetlen paranccsal elindíthatod az egészet. Tökéletes többszolgáltatásos alkalmazásokhoz.
docker compose up -d
Ha még nem ismered, a Docker Compose bevezető cikk lépésről lépésre bemutatja.
Docker Engine és daemon
Docker Engine
A Docker Engine maga a futtatórendszer, amely a konténereket kezeli. Ez a Docker „motorja”.
Daemon (dockerd)
A daemon a háttérben futó szolgáltatás (dockerd), amely valójában létrehozza és kezeli a konténereket, image-eket és hálózatokat. A docker parancssori eszköz ezzel a daemonnal kommunikál.
⚠️ Figyelem: Ha a
dockerparancs „Cannot connect to the Docker daemon” hibát ad, az szinte mindig azt jelenti, hogy a daemon nem fut. Indítsd el a Docker Desktopot vagy adockerszolgáltatást.
Entrypoint vs. CMD
Mindkettő azt határozza meg, mi fusson a konténer indításakor, de eltérő szereppel.
- ENTRYPOINT – A fő futtatható parancs, amely „mindig” lefut. Olyan, mint maga a program.
- CMD – Az alapértelmezett argumentumok vagy parancs, amelyet felül lehet írni a
docker runután megadott paraméterekkel.
A kettő gyakran együtt szerepel: az ENTRYPOINT adja a programot, a CMD pedig az alapértelmezett argumentumokat.
Összefoglalás
- Az image a sablon, a konténer annak futó példánya, az image-ek rétegekből állnak.
- A Dockerfile írja le az image felépítését, a build context a hozzá tartozó fájlok.
- A registry (pl. Docker Hub) tárolja az image-eket, a tag azonosítja a verziókat.
- A volume és a bind mount adatok megőrzésére szolgál, a network és a port mapping a kommunikációért felel.
- A Compose több konténert kezel egyben, a daemon a háttérben futó motor.
Most, hogy a fogalmak a helyükre kerültek, ideje a gyakorlatra! Nézd meg a Kezdő lépések útmutatót, vagy ugorj egyenesen Az első konténered cikkre, és próbáld ki élesben mindazt, amit most megtanultál.