Mi történik a docker run mögött?
A Docker elsőre varázslatnak tűnhet, pedig jól érthető építőkövekre épül. Vegyük végig a legfontosabb fogalmakat és a teljes architektúrát.
A hat fogalom, amit érdemes ismerni
Ha ezeket megérted, a Docker 90%-át megértetted.
Image (képfájl)
Csak olvasható sablon, amely tartalmazza az alkalmazást és minden függőségét. Rétegekből épül fel, és a Docker Hubon megosztható. Az image-ből készülnek a futó konténerek.
Container (konténer)
Egy image futó példánya — izolált folyamat a saját fájlrendszerével, hálózatával és erőforrásaival. Egy image-ből akárhány konténert indíthatsz.
Dockerfile
Szöveges fájl, amely lépésről lépésre leírja, hogyan épüljön fel az image: milyen alapból indul, mit másol be, milyen parancsot futtat induláskor.
Docker Engine
A háttérben futó szolgáltatás (daemon), amely az image-eket és konténereket kezeli. A CLI parancsaidat ez hajtja végre a háttérben.
Registry / Docker Hub
Központi tárhely az image-eknek. A Docker Hub a legnagyobb nyilvános registry — innen húzhatsz le kész image-eket, vagy ide töltheted fel a sajátodat.
Volume
Tartós adattároló, amely túléli a konténer újraindítását vagy törlését. Adatbázisok és feltöltött fájlok megőrzésére használjuk.
Dockerfile → Image → Konténer
A folyamat mindig ugyanaz: leírod a környezetet egy Dockerfile-ban,
ebből a docker build egy hordozható image-et készít,
majd a docker run ebből indít egy vagy több futó konténert.
- 1. Build: a recept (Dockerfile) alapján elkészül a sablon (image).
- 2. Ship: az image feltölthető a registrybe, és bárhol letölthető.
- 3. Run: az image-ből izolált, futó konténer lesz.
A rétegek a CLI-től a kernelig
A parancsod hosszú utat jár be, mire egy konténer ténylegesen elindul.
Docker CLI
A parancssori eszköz, amibe a docker run, build, ps parancsokat gépeled.
Docker Engine (daemon)
A REST API-n keresztül fogadja a parancsokat, és kezeli az image-eket, konténereket, hálózatokat.
containerd + runc
Az alacsony szintű futtató réteg, amely ténylegesen elindítja és felügyeli a konténerfolyamatokat.
Linux kernel (namespaces + cgroups)
Az izoláció és erőforrás-korlátozás a kernel beépített képességeire épül.
namespaces (izoláció) és cgroups
(erőforrás-korlátozás) képességeit használja, ezért olyan könnyű és gyors.
Most, hogy érted az elméletet — próbáld ki!
A gyakorlat ragad meg igazán. Vágjunk bele az első saját image megépítésébe.
Kezdő lépések →