Képzési anyag a Docker használatához.
Ha elakadtál, vagy kérdésed van, írj nekünk: Hibajelenség / Kérdés
- Hasnos linkek
- Docker alapok
- Docker Desktop telepítése
- Docker parancsok
- Konténer adatainak ellenőrzése, naplózás
- Konténer indítása, leállítása
- Konténer hálózatok
- Docker fájlrendszer
- Parancsok futtatása konténerben
- Képek kezelése (letöltés, címkézés)
- Képek létrehozása (docker build)
- Docker Compose
- Docker alapú alkalmazás saját képből
- Képek tárolása Azure-ban (ACR)
- Azure erőforrások létrehozása Docker képből
- DevOps CI/CD pipeline alkalmazása
- Azure Webalkalmazás létrehozása Docker képből
- Példák:
A Docker egy innovatív eszköz, amely segít a fejlesztőknek és rendszergazdáknak az alkalmazások gyors kifejlesztésében, telepítésében és skálázásában konténerizált környezetben. Konténerek segítségével a Docker lehetővé teszi az alkalmazások csomagolását és futtatását izolált környezetben, ami nagyban hozzájárul a platformok közötti kompatibilitáshoz és az infrastruktúra hatékonyságának növeléséhez.
-
Miért Docker?
- Konzisztencia: A Docker garantálja, hogy az alkalmazás ugyanúgy fut minden környezetben, legyen szó fejlesztői gépről vagy termelési környezetről.
- Izoláció: Minden konténer izoláltan működik, így a szoftverek kölcsönös zavarása nélkül futtathatók.
- Biztonság: Az izoláció révén a Docker javítja az alkalmazások biztonságát, mivel a konténerek korlátozzák a hozzáférést és erőforrás-használatot.
- Skálázhatóság és menedzsment: A Docker lehetővé teszi az alkalmazások könnyű skálázását és kezelését, ami ideálissá teszi őket mikroszolgáltatások architektúrájában.
-
Alapvető fogalmak
- Docker képfájlok: A Docker képek a szoftvercsomagok állóképei, amelyek tartalmazzák az alkalmazások futtatásához szükséges minden fájlt és könyvtárat.
- Konténerek: Az indított Docker képekből létrehozott futtatható példányok, amelyek tartalmazzák az alkalmazást és annak futtatásához szükséges környezetet.
- Docker Hub: A Docker saját registry-je, ahol a fejlesztők feltölthetik és letölthetik a különböző Docker képeket.
A Docker alapos megértése kulcsfontosságú a modern szoftverfejlesztési és telepítési folyamatokban. Reméljük, ez a rövid bevezető segít megérteni a Docker alapjait és előnyeit, ami alapozza majd a további mélyebb ismeretek elsajátítását.
Telepítési link (Mac, Linux, Windows): https://www.docker.com/products/docker-desktop
Linux és Mac esetén a Docker Desktop telepítése egyszerű, csak letöltjük a telepítőt, és követjük a telepítési utasításokat. Windows esetén a telepítéshez szükség van a WSL 2 (Windows Subsystem for Linux) telepítésére is.
- Windows telepítési lépések
Ha Azure VM-en szeretnénk használni a Docker Desktop-ot, akkor a WSL 2 telepítése szükséges. Ehhez olyan géptípusra van szükségünk, amely támogatja a virtualizációt. Ilyen például az Azure Dv3 vagy Ev3 virtuális gépek.
-
A létrehozásnál az alábbiakra kell figyelni (másképpen, nem fog működni a Docker Desktop):
- Biztonság típua: Standard
- Kép:
- Windows Server 2022 Datacenter - x64 Gen2
- Windows 11
- Méret: például Standard D2s v3
-
Lépj be a gépbe RDP-n keresztül.
-
Nyiss egy PowerShell-t rendszergazdaként.
-
WSL engedélyezése. Futtasd le az alábbi parancsot:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- Virtális gép funkció engedélyezése. Futtasd le az alábbi parancsot:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- Indítsd újra a gépet. (
Restart-Computer
) - Töltsd le a WSL 2 kernel frissítést a Microsoft oldaláról: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi vagy PowerShell-ben futtasd le az alábbi parancsot:
wget -Uri https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -OutFile "$env:USERPROFILE\Downloads\wsl_update_x64.msi"
-
Telepítsd a WSL 2 kernel frissítést.
cd $env:USERPROFILE\Downloads .\wsl_update_x64.msi
-
Nyiss egy PowerShell-t rendszergazdaként. Állítsd be a WSL 2-t alapértelmezett verzióként. Futtasd le az alábbi parancsot:
wsl --set-default-version 2
- Frissítsd a WSL 2 verzióját. Futtasd le az alábbi parancsot:
wsl --update
- Telepítsd az Ubuntu 24.04 Linux disztribúciót
wsl --install -d Ubuntu-24.04
- A telepítés során kérni fogja a felhasználónevet és a jelszót. Ezeket add meg.
- Töltsd le a Docker Desktop telepítőt a hivatalos weboldalról. (https://www.docker.com/products/docker-desktop)
- Indítsd el a telepítőt, és kövesd az utasításokat.
- A telepítés során válaszd ki a WSL 2-t is.
- Telepítés után kéri, hogy jelentkezz ki a felhasználókkal. Újra indítás a legbiztosabb megoldás, hogy minden rendben legyen.
- Használatba vehető a Docker Desktop.
-
Miért Docker Desktop?
- Egyszerűen telepíthető
- Minden szükséges komponenst feltelepít
- Erőforrásszükséglet a futtató géphez szabható
- Teljes Docker funkcionalitás (images, DockerHub)
- Helyi Kubernetes (K8s) szerver
- Kiegészítők (monitorozás, egyéb cluster megoldások)
-
Docker képek elérési útja
- Ubuntu:
/var/lib/docker/
- Fedora:
/var/lib/docker/
- Debian:
/var/lib/docker/
- Windows:
C:\ProgramData\DockerDesktop
vagyC:\Users\{felhasználónév}\AppData\Local\Docker
- MacOS:
~/Library/Containers/com.docker.docker/Data/vms/0/
- Ubuntu:
-
docker pull <kép>
: Letölt egy Docker képet a registry-ből. -
docker run <kép>
: Létrehoz és indít egy konténert a megadott képből. -
docker ps
: Megjeleníti az aktív konténereket. -
docker stop <konténer>
: Megállít egy futó konténert. -
Verzió:
docker version
- Docker image lista:
docker images
- Image törlés:
docker rmi {image neve}:{tag}
- Docker konténer futtatása:
docker run -d -p 80:80 docker/getting-started
- Futó Docker konténerek listázása:
docker ps
- Összes Docker konténer listázása:
docker ps -a
- Docker konténer törlése (csak ha le van állítva):
docker rm {konténer azonosító}
- Docker konténer törlése (erőltetve):
docker rm {konténer azonosító} --force
- Image építése Dockerfile alapján:
docker build --tag {namespace vagy author}/{image neve}:{verzió} .
Megjegyzés:
- Ha az image fájlt Apple Silicon processzoros gépen készítem, de utána Intel processzoros gépen használom, akkor a fenti parancshoz adjuk hozzá ezt:
--platform linux/amd64
- Több platformos build:
docker buildx build --tag {kép neve címkével} --push . --platform linux/amd64,linux/arm64,linux/arm/v7
docker inspect {konténer azonosító}
docker logs {konténer azonosító}
Megjegyzés:
- Ha a naplót folyamatosan szeretnénk látni, akkor használjuk a
-f
kapcsolót:docker logs -f {konténer azonosító}
docker start {konténer azonosító}
docker stop {konténer azonosító}
Hálózatkezelése hasonlít a hagyományos hálózatkezeléshez, de a konténerek izoláltak, és saját IP-címmel rendelkeznek.
A fájlrendszer a konténerben a Docker image-ből indul ki, és a konténer futása során módosítható. A fájlrendszer a konténerben lévő fájlokat és könyvtárakat tartalmazza, és lehetővé teszi az alkalmazások számára az adatok tárolását és kezelését.
docker exec -it {konténer azonosító} bash
docker exec {konténer azonosító} {parancs}
docker pull {kép neve}:{verzió}
docker tag {kép neve}:{verzió} {új név}:{új verzió}
Képeket a progtamkódunk alapján készíthetünk el a Dockerfile segítségével. A Dockerfile egy szöveges fájl, amely tartalmazza azokat az utasításokat, amelyekre a Docker Engine építi a képet.
- Mi az a Docker Compose?
Docker Compose egy eszköz, amely lehetővé teszi több Docker konténer egyszerű definícióját és indítását egyetlen konfigurációs fájl segítségével. Kifejezetten hasznos fejlesztői környezetekben, teszteléshez és staging környezetekben.
-
Miért hasznos a Docker Compose?
-
Egyszerűség: Egyetlen
docker-compose.yml
fájlban kezelhető az összes szolgáltatás, ami egyszerűsíti a konfigurációt. -
Automatizálás: Parancssorból egyszerű parancsokkal indíthatók és állíthatók le a szolgáltatások.
-
Környezet konzisztencia: Biztosítja, hogy a fejlesztői környezet megegyezzen a termelésivel, csökkentve a "nálam működik" típusú problémákat.
-
Hogyan működik a Docker Compose?
A docker-compose.yml
fájlban definiálod a szükséges szolgáltatásokat, hálózatokat és tárolókat. A docker compose up
parancs futtatásával elindítja a definiált konténereket és szolgáltatásokat. A docker compose down
parancs leállítja és eltávolítja a szolgáltatásokat, hálózatokat és konténereket.
- Első lépések
- Telepítsd a Docker Compose-t (Docker Desktop telepíti).
- Készíts egy
docker-compose.yml
fájlt, amely tartalmazza a futtatni kívánt szolgáltatásokat. - Használd a
docker compose up
parancsot a szolgáltatások indításához. - Használd a
docker compose down
parancsot a szolgáltatások leállításához.
Megjegyzés: docker compose up -d
kapcsolóval a konténerek a háttérben futnak.
docker-compose up --build
docker-compose up -d
Megjegyzés: -d
kapcsolóval a konténerek a háttérben futnak.
docker-compose down
Jelenleg Azure Container Registry (ACR) szolgáltatásban tároljuk a Docker képeket, amelyeket a GitHub Actions segítségével automatizáltan telepítünk az Azure Webalkalmazásba.
Azure Container Registry (ACR) egy Docker képtároló, amely lehetővé teszi a Docker képek tárolását és kezelését a felhőben. Az ACR használatával a fejlesztők könnyen kezelhetik a Docker képeket, és biztonságosan oszthatják meg őket a csapat tagjaival.
- Lépjen be az Azure Portalba.
- Keresse meg a "Tárolóregisztrációs adatbázis" szolgáltatást.
- Kattintson az "Létrehozás" gombra.
- Adja meg a következő adatokat:
- Registry name: egyedi név az ACR-hez
- Subscription: az Azure előfizetése
- Resource group: az erőforrás csoport neve
- Location: a régió, ahol az ACR tárolva lesz
- SKU: az ACR ártervezési modellje
- Admin Account engedélyezése az ACR-ben
Ha frissen hoztunk létre egy Azure Container Registry-t, akkor az alapértelmezett beállítások miatt nem tudunk hozzáférni az ACR-hez webalkalmazásból. Ezért engedélyeznunk kell az Admin Account-ot az ACR-ben. Ennek lépései azure-cli segítségével:
- Jelentkezzünk be az ACR-be:
az acr login --name {ACR név}
- Engedélyezzük az Admin Account-ot:
az acr update -n {ACR név} --admin-enabled true
- Bejelentkezés az ACR-be:
az acr login --name {ACR név}
- Docker kép címkézése:
docker tag {kép neve} {ACR név}.azurecr.io/{kép neve}:{verzió}
Megjegyzés: latest
verziót minden esetben töltsünk fel, hogy egyszerűbb legyen az automatizáció.
- Docker kép feltöltése:
docker push {ACR név}.azurecr.io/{kép neve}:{verzió}
- Lépjünk be az Azure Portalba.
- Keressünk rá a "Tárolópéldányok" szóra a képernyő tetején található keresőmezőben.
- Kattints a "Tárolópéldányok" lehetőségre.
- Kattintsunk a "Létrehozás" gombra.
- Adja meg a következő adatokat:
- Tároló neve: egyedi név a tárolóhoz
- Location: a régió, ahol az tároló létrejön
- Kép forrása: Azure Container Registry
- Lemezkép: a korábban feltöltött kép
- Lemezkép-címke: a
latest
vagy a verziószám - Operációs rendszer: Linux
- Méret: 1 vCPU, 1 GB RAM, 0 gpu
- Kattintsunk a "Következő" gombra.
- DNS-névcímke: maradhat üresen
- Portok: 80
- Kattintsunk a "Következő" gombra.
- Újraindítási szabályzat: Mindig
- Kattintsunk a "Következő" gombra.
- Kattintsunk a "Következő" gombra.
- Kattintsunk a "Létrehozás" gombra.
- Mi az a GitHub Actions?
GitHub Actions egy automatizálási eszköz, amely lehetővé teszi szoftverfejlesztési feladatok automatizálását közvetlenül a GitHub repository-kon belül. Felhasználható tesztek futtatására, build-ek készítésére, deploy folyamatok kezelésére és még sok másra.
-
Miért hasznos a GitHub Actions?
-
Integráció: Közvetlenül integrálható a GitHub-al, nem szükséges külső CI/CD eszközöket használni.
-
Rugalmas: Tetszőleges workflow-k létrehozhatók, amelyek megfelelnek a projekt specifikus igényeinek.
-
Közösségi támogatás (community): Hozzáférés számos előre készített "action"-höz, amelyeket a közösség osztott meg.
-
Hogyan működik a GitHub Actions?
Workflow fájlok (általában .github/workflows
mappában található YAML fájlok) definiálják a műveleteket, amelyeket egy esemény (például push
, pull request
) vált ki. Minden workflow tartalmaz egy vagy több job-ot, amelyek futtathatók ugyanazon runner-en vagy különböző runner-eken. Az Actions lehetővé teszi a folyamatok parallelizálását és az erőforrások hatékony kezelését.
- Első lépések
- Készíts egy
.github/workflows
mappát a repository-ban. - Hozz létre egy YAML fájlt, ami leírja a workflow-d (például
build.yml
). - Definiálj eseményeket, job-okat és lépéseket a fájlban, amelyek meghatározzák, mi történjen automatizálás során.
- Commitold és pushold a változásokat, hogy aktiváld a workflow-t.
- Lépjünk be a GitHub repository-ba.
- Menjünk a "Settings" fülre.
- Kattintsunk a "Secrets and variables" menüpontra.
- Válasszuk az "Actions" lehetőséget.
- Kattintsunk a "New repository secret" gombra.
- Adja meg a következő adatokat:
- Name: ACR_LOGIN_SERVER
- Secret: mentorklub.azurecr.io
- Kattints az "Add secret" gombra.
- Ismételje meg az 5-7 lépéseket a következő adatokkal:
- Name: ACR_USERNAME
- Secret: {az ACR felhasználóneve}
- Ismételje meg az 5-7 lépéseket a következő adatokkal:
- Name: ACR_PASSWORD
- Secret: {az ACR password vagy password2}
- Clone-ozzuk le a repository-t a gépünkre.
- Hozzunk létre egy
.github/workflows
mappát a repository gyökérkönyvtárában. - Hozzunk létre egy
elso-github-action.yml
fájlt a.github/workflows
mappában. - Készítsük el a megfelelő CI/CD pipeline-t a fájlban. (nem szükséges a teéjes folyamatot egy fájlban megvalósítani. Lehetséges, hogy egy nagy CI/CD folyamatot több fájlban valósítunk meg.)
Példák:
-
Webalkalmazás létrehozásánál a Docker képet az Azure Container Registry-ből használjuk. Az Azure Webalkalmazás lehetővé teszi a konténerek gyors és egyszerű telepítését, skálázását és kezelését a felhőben.
-
Webalkalmazás módosítása
- Üzembehelyezési központban állítsuk át a
Folyamatos telepítés
értékésBekalcsolva
-ra. - Konfiguráció > Általános beállítások > Mindig bekapcsolva: Be
- Üzembehelyezési központban állítsuk át a