Docker bevezető útmutató: Gyorsan konténerizáld az alkalmazásodat
# Docker bevezető útmutató: Gyorsan konténerizáld az alkalmazásodat
A Docker a modern szoftverfejlesztés és telepítés nélkülözhetetlen részévé vált. Bár a Kubernetes körüli viták mindent elborítanak, a Docker továbbra is sok vállalat elsődleges eszköze az alkalmazások építéséhez, teszteléséhez és telepítéséhez. Ez a cikk bevezet a Docker használatába, megismertet a legfontosabb fogalmakkal, és egy gyakorlati példát is ad, amely segít az alkalmazás konténerizálásának elkezdésében.
## Docker alapfogalmak
A gyakorlati megvalósítás előtt elengedhetetlen a Docker néhány alapfogalmának megértése:
* **Kép (Image):** A kép egy csak olvasható sablon, amely mindent tartalmaz, ami az alkalmazás futtatásához szükséges: kódot, futtatókörnyezetet, rendszerszintű eszközöket, könyvtárakat és függőségeket. Hasonló a virtuális gép képekhez, de sokkal könnyebb.
* **Konténer (Container):** A konténer egy képből létrehozott futó példány. Ez a kép futásidejű példánya, amely tartalmazza az alkalmazást és annak összes függőségét. A konténerek egymástól el vannak szigetelve, saját fájlrendszerrel, folyamatokkal és hálózati térrel rendelkeznek.
* **Docker Hub:** A Docker Hub egy nyilvános képtár, ahonnan előre elkészített képeket tölthetsz le, vagy feltöltheted a saját képeidet. Hasonló a GitHubhoz, de kifejezetten Docker képekhez.
* **Dockerfile:** A Dockerfile egy szöveges fájl, amely tartalmazza a Docker kép létrehozásához szükséges összes utasítást. A Dockerfile megírásával automatizálhatod a kép létrehozási folyamatát.
* **Docker Compose:** A Docker Compose egy eszköz többkonténeres Docker alkalmazások definiálására és futtatására. Lehetővé teszi, hogy YAML fájlokkal konfiguráld az alkalmazás szolgáltatásait, majd egyetlen paranccsal elindítsd vagy leállítsd az összes szolgáltatást.
## Docker telepítése
Először telepítened kell a Dockert. A Docker különféle operációs rendszerekhez kínál telepítőcsomagokat. Látogass el a [Docker hivatalos weboldalára](https://www.docker.com/get-started/), és kövesd a megfelelő utasításokat a telepítéshez.
A telepítés befejezése után a `docker --version` parancs futtatásával ellenőrizheted, hogy a Docker megfelelően lett-e telepítve.
## Egy egyszerű Python alkalmazás konténerizálása
Létrehozunk egy egyszerű Python alkalmazást, és a Docker segítségével konténerizáljuk.
### 1. Python alkalmazás létrehozása
Hozz létre egy `app.py` nevű fájlt a következő kóddal:
```python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Docker!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Ez az egyszerű Flask alkalmazás a gyökérútvonalon / a "Hello, Docker!" üzenetet adja vissza.
2. requirements.txt fájl létrehozása
Az alkalmazás a Flask könyvtártól függ, ezért létre kell hoznunk egy requirements.txt fájlt a függőségek deklarálásához.
Flask
3. Dockerfile létrehozása
Hozz létre egy Dockerfile nevű fájlt, és add hozzá a következő tartalmat:
# Használd a hivatalos Python képet alap képként
FROM python:3.9-slim-buster
# Állítsd be a munkakönyvtárat
WORKDIR /app
# Másold a requirements.txt fájlt a munkakönyvtárba
COPY requirements.txt .
# Telepítsd a függőségeket
RUN pip install --no-cache-dir -r requirements.txt
Alkalmazás kódjának másolása a munkakönyvtárba
COPY app.py .
5000-es port közzététele
EXPOSE 5000
Indítási parancs definiálása
CMD ["python", "app.py"]
**Dockerfile leírás:**
* `FROM python:3.9-slim-buster`: A bázis image megadása, ami a Python 3.9 karcsúsított verziója.
* `WORKDIR /app`: A konténeren belüli munkakönyvtár beállítása `/app`-re.
* `COPY requirements.txt .`: A `requirements.txt` fájl másolása az aktuális könyvtárból a konténer `/app` könyvtárába.
* `RUN pip install --no-cache-dir -r requirements.txt`: A `pip` parancs futtatása a konténeren belül a `requirements.txt` fájlban megadott függőségek telepítéséhez. A `--no-cache-dir` paraméter csökkentheti az image méretét.
* `COPY app.py .`: Az `app.py` fájl másolása az aktuális könyvtárból a konténer `/app` könyvtárába.
* `EXPOSE 5000`: Deklarálja, hogy a konténer az 5000-es portot fogja figyelni.
* `CMD ["python", "app.py"]`: Meghatározza a konténer indításakor végrehajtandó parancsot.
### 4. Docker image létrehozása
A `Dockerfile`-t tartalmazó könyvtárban futtassa a következő parancsot a Docker image létrehozásához:
```bash
docker build -t my-python-app .
docker build: Az image létrehozására szolgáló parancs.-t my-python-app: Egy név (my-python-app) megadása az image-hez..: A Dockerfile-t tartalmazó könyvtár megadása (az aktuális könyvtár).
A build folyamat eltarthat egy ideig, a hálózati sebességtől és a függőségek méretétől függően.
5. Docker konténer futtatása
A következő parancs segítségével futtathatja a Docker konténert:
docker run -d -p 5000:5000 my-python-app
docker run: A konténer futtatására szolgáló parancs.-d: A konténer leválasztott módban történő futtatása (a háttérben fut).-p 5000:5000: A gazdagép 5000-es portjának leképezése a konténer 5000-es portjára.my-python-app: A használni kívánt image nevének megadása.
6. Az alkalmazás ellenőrzése
A böngészőben látogasson el a http://localhost:5000 címre, és látnia kell a "Hello, Docker!" üzenetet.
7. A konténer leállítása és törlése
A következő paranccsal állíthatja le a konténert:
docker stop
`` A docker ps paranccsal megtekinthető.
A következő paranccsal törölheti a konténert:
docker rm
Docker Compose bevezetés
Ha az alkalmazás több szolgáltatásból áll, a Docker Compose segítségével kezelheti azokat.
1. docker-compose.yml fájl létrehozása
Létre kell hozni egy docker-compose.yml nevű fájlt, és adja hozzá a következő tartalmat:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml leírás:* version: "3.9": Meghatározza a Docker Compose fájl verzióját.
services: Meghatározza az alkalmazás szolgáltatásait.web: Meghatároz egy "web" nevű szolgáltatást.image: my-python-app: Meghatározza a szolgáltatás által használt image-et.ports: Meghatározza a port hozzárendeléseket.
2. Az alkalmazás elindítása
A docker-compose.yml fájlt tartalmazó könyvtárban futtassa a következő parancsot az alkalmazás elindításához:
docker-compose up -d
docker-compose up: Az alkalmazás elindításának parancsa.-d: A konténerek leválasztott módban futtatása.
3. Az alkalmazás leállítása
Az alkalmazás leállításához használja a következő parancsot:
docker-compose down
Docker biztonsági legjobb gyakorlatok
A megbeszélésből látható, hogy a Docker image-ek biztonsága fontos kérdés. Íme néhány Docker biztonsági legjobb gyakorlat:
- Hivatalos image-ek használata: Lehetőleg a hivatalos image-eket használja, ezeket általában biztonsági szempontból átvizsgálják és karbantartják.
- Image-ek sebezhetőségeinek vizsgálata: Használjon olyan eszközöket, mint a Trivy, hogy átvizsgálja az image-ek ismert sebezhetőségeit, és időben frissítse az image-eket.
- A legkisebb jogosultság elve: Kerülje a konténerek root felhasználóként történő futtatását.
- Konténer erőforrások korlátozása: Használjon cgroups-t a konténerek CPU és memória használatának korlátozására.
- Image-ek rendszeres frissítése: Tartsa naprakészen az image-eket a biztonsági rések javítása érdekében.
- Biztonsági szkennelő eszközök használata: Az olyan eszközök, mint a Snyk, Clair integrálhatók a CI/CD folyamatba, és automatikusan átvizsgálják az image-ek sebezhetőségeit.





