← Vissza a bloghoz Alapok

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 a node_modules vagy a .git, akkor lassú lesz a build, ezért használj .dockerignore fá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 docker parancs „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 a docker szolgá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 run utá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.