# 🐳 Docker ## 👓 Fontosabb fogalmak **Dockerfile:** Egy szöveges "recept", ami leírja, hogyan kell felépíteni a konténerünket *(milyen alaprendszerből induljon, milyen csomagokat telepítsen, milyen fájlokat másoljon be, milyen parancsot futtasson indításkor)*. **Image *(Kép)*:** A Dockerfile alapján létrehozott "sablon" vagy "tervrajz". Ez tartalmaz mindent, ami az alkalmazás futtatásához kell. Nem változik. Maga a "becsomagolt" állapot. **Container *(Konténer)*:** Az Image-ből elindított, futó példány. Ez már egy élő, futó folyamat, amivel interakcióba lehet lépni. Egy Image-ből több Container-t is indíthatunk. **Docker Hub:** Egy online "könyvtár" (registry), ahol rengeteg előre elkészített Image-t találhatunk (pl. web szerverekhez, adatbázisokhoz, programozási nyelvekhez). ## 👨🏼‍💻 Docker parancsok ### 📥 Telepítés sudo apt install docker.io docker-compose-v2 -y **Felhasználó hozzáadása a docker csoporthoz** \\ Így nem kell `sudo` a docker parancsok elé. sudo groupadd docker sudo usermod -aG docker $USER Jelentkezz be újra a felhasználóval. ---- ### 📐 Image kezelés * **Docker image letöltése** docker pull * **Letöltött Image-k listázása** docker image ls -a * **Image törlése** docker rmi ---- ### 🧰 Konténer kezelés * **Minden konténer listázása** docker container ls -a * **Csak a futó konténerek listázása** docker ps * **Konténer futtatása** docker run --name -d -p 8080:80 image-neve ahol: **docker run**: *Parancs egy új konténer indítására.*\\ **--name **: *Nevet adunk a konténernek (könnyebb hivatkozni rá).*\\ **-d (detach)**: *A konténer a háttérben fusson, ne foglalja le a terminált.*\\ **-p 8080:80 (publish)**: *Port átirányítás. Például a gépünk (host) 8080-as portjára érkező kéréseket irányítsa át a konténeren belül futó webszerver 80-as portjára (ez a HTTP alapértelmezett portja).*\\ **image-neve:** *Megadjuk, melyik image-ből induljon a konténer.)* * **Konténer leállítása** docker stop * **Konténer törlése** docker rm ---- ### 🕵🏻‍♂️ Hibakeresés docker container logs ---- ## 📜 Néhány egyszerű példa {{topic>docker +tutorial}} ---- ## 🧾 Docker Compose Eddig minden konténert egy hosszú `docker run` paranccsal indítottunk. De mi van, ha például egy weboldalhoz egyszerre kell egy webszerver, egy adatbázis és egy PHP feldolgozó is? Három külön terminálablakban futtatnánk őket? Hogyan beszélgetnek egymással? Erre a **Docker Compose** a megoldás. Ez az "Infrastructure as Code" (IaC) alapja: ahelyett, hogy parancsokat gépelnénk, egy szöveges fájlban (**compose.yaml**) írjuk le, hogyan nézzen ki a rendszerünk. **Előnyei:** * **Reprodukálható:** A fájlt átküldöd a társadnak, beírja, hogy `docker compose up`, és ugyanaz fut nála is. * **Átlátható:** Egy fájlban látod a teljes architektúrát. * **Hálózatkezelés:** Automatikusan létrehoz egy belső hálózatot, ahol a konténerek a nevük alapján megtalálják egymást. **További leírás:** * [[docker-compose|🧾 Docker Compose]] részletesen, példákkal ---- {{tag>docker}}