Vissza a bloghoz

Python alkalmazás konténerizálása Docker segítségével

Python alkalmazás konténerizálása Docker segítségével

Docker egy ingyenes és nyílt forráskódú megoldás alkalmazások fejlesztésére, telepítésére és kezelésére könnyűsúlyú, operációsrendszer-szintű virtualizációban. Ebben az útmutatóban bemutatjuk egy Python alkalmazás létrehozását egy Docker konténerben.

Előfeltételek

Az ebben az útmutatóban bemutatott lépések végrehajtásához a következő összetevőkre lesz szüksége:

Docker konténerek

Ha különböző programokat futtat ugyanabban a környezetben, a dolgok elromolhatnak (és el is fognak). Minél több programot ad hozzá, annál instabilabbá válik. Az átlagemberek számára ez nem biztos, hogy nagy ügy. Azonban, ha kritikus fontosságú alkalmazásokról van szó, annak súlyos következményei lehetnek.

Minél több alkalmazást vezetnek be a rendszerbe, annál nagyobb a támadási felület. Egyetlen kompromittálódott alkalmazás könnyen az egész rendszer összeomlásához vezethet.

Ezen problémák megoldására Docker konténereket használhatunk szoftverszintű homokozóként (sandboxing):

  • A konténeren belüli alkalmazások korlátozott hozzáféréssel rendelkeznek a fájlokhoz.

  • A konténerizált alkalmazások nem látják a rendszerben futó többi folyamatot.

  • A konténerhez meghatározott mennyiségű hardveres erőforrás rendelhető hozzá.

  • A konténer hálózati portjai nincsenek kívülről közzétéve.

  • Szinte bármi konzisztens csomagolása a helyi és az éles környezetek között.

Ennek bemutatására egy egyszerű Python szervert fogunk építeni egy Docker konténerben, a konténert képpé (image) alakítjuk, és a képet egy fiktív éles környezetben fogjuk telepíteni.

1. lépés – Fájlrendszer konfigurálása

A projekt befogadására először egy dedikált könyvtárat fogunk létrehozni:

A könyvtáron belül hozzon létre egy alkönyvtárat src a kódunk tárolására:

2. lépés – A Python szerver felépítése

Ebben a lépésben egy egyszerű HTTP szervert fogunk létrehozni Pythonban. Hozza létre a fájlt server.py:

Nyissa meg egy szövegszerkesztőben:

Adja meg a következő Python kódot:

Itt,

  • A HTTPServer osztályt használjuk, és egy kezelőt kérünk a standard Python könyvtárból, egyszerűen tartva a programot.

  • A run függvény elindítja a(z) HTTPserver.

  • Ahogy a(z) server_address argumentumai sugallják, a szerver minden bejövő kapcsolatot figyelni fog a 8080-as porton.

Most ellenőrizzük, hogy a szerver a várt módon működik-e. Indítsa el a szervert:

Egy új terminálból a curl parancsot használhatjuk kérés küldésére a szervernek:

Alternatív megoldásként elérheti a linket egy webböngészőben is:

3. lépés – Dockerfile létrehozása

A Dockerfile  tartalmazza a Docker kép (image) létrehozásához szükséges utasításokat. A fájlban lévő utasításokat egymás után hajtja végre a rendszer. Tudjon meg többet a Dockerfile.

Hozzon létre egy új Dockerfile fájlt a projektünkhöz:

Most bevezetjük a szükséges kódokat. Nyissa meg egy szövegszerkesztőben:

Adja meg a következő kódot:

Itt,

  • Minden Dockerfile-nak a FROM direktívával kell kezdődnie. A mi esetünkben a Pythont deklaráljuk a Docker-képfájl alapjaként.

  • Az ENV SRC_DIR direktíva határozza meg a konténer könyvtárának helyét.

  • A COPY direktíva másolja át a fájlokat az src könyvtárból, amely jelenleg a Python szervert tárolja.

  • A PYTHONBUFFERED=1 változó meghatározza, hogy a Python közvetlenül az STDOUT csatornára írja ki és naplózza a kimenetet. Ellenkező esetben a naplók nem kerülnének semmilyen pufferbe.

  • A CMD direktíva határozza meg a konténer futtatásakor végrehajtandó alapértelmezett parancsot. Ebben az esetben a direktívát a Python szerverünk elindítására használjuk.

4. lépés – Docker-képfájl generálása

A Dockerfile elkészültével most már létrehozhatjuk a képfájlt. Futtassa a következő Docker parancsot a folyamat elindításához:

Itt,

  • A -t jelző szolgál a Docker-képfájlunk megjelölésére mint python_server.

  • . A Docker letölti az összes szükséges összetevőt, és egy képfájlban egyesíti őket.

5. lépés – A képfájl futtatása

A képfájl készen áll a telepítésre. A következő paranccsal futtathatjuk:

Itt a helyi gép 8080-as portját továbbítjuk a Docker-képfájl felé a -p jelző használatával.

Könnyen ellenőrizhetjük, hogy a szerver fut-e a curl:

6. lépés – A szerver leállítása

A terminálban nyomja meg a “Ctrl + C” billentyűkombinációt a Docker folyamat leállításához:

7. lépés – A Docker-képfájl exportálása és importálása

Most már van egy működő Docker-képfájlunk, amely a Python szerverünket tárolja. A Docker exportálási és importálási funkcióinak segítségével bármilyen más rendszerre áttelepíthetjük.

Először ellenőrizze a Docker-képfájlok listáját az aktuális rendszerben:

A célunk az imént létrehozott python_server Docker-képfájl. A következő parancs exportálja azt TAR archívumként:

Miután átvitte a python_server.tar fájlt a célgépre, használja a következő parancsot a Docker-képfájl importálásához:

Záró gondolatok

Ebben az útmutatóban bemutattuk, hogyan építhető Docker-képfájl egy Python-alkalmazásból. Létrehoztunk egy egyszerű Python webszervert, és Docker-képfájlt készítettünk belőle. A Docker-képfájl mostantól bármilyen környezetben telepíthető, és konzisztens működést várhatunk tőle.

Szeretne többet megtudni a Dockerről? Tekintse meg a következő útmutatókat:

Kellemes számítógép-használatot!

author

Preslav Dobrev

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.