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:
-
Egy Linux rendszer. Tekintse meg a saját Ubuntu VPS konfigurálását a CloudSigma-n.
-
A Docker legújabb verziója telepítve és konfigurálva van. Tudjon meg többet a Docker telepítéséről Ubuntu-ra.
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:
|
1 |
mkdir -pv python-server-container/ |
|
1 |
cd !$ |
A könyvtáron belül hozzon létre egy alkönyvtárat src a kódunk tárolására:
|
1 |
mkdir -pv src/ |
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:
|
1 |
touch server.py |
Nyissa meg egy szövegszerkesztőben:
|
1 |
nano server.py |

Adja meg a következő Python kódot:
|
1 2 3 4 5 6 7 8 9 10 11 |
from http.server import HTTPServer, SimpleHTTPRequestHandler def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler): """server entrypoint""" server_address = ("0.0.0.0", 8080) httpd = server_class(server_address, handler_class) print("starting server...") httpd.serve_forever() if __name__ == "__main__": run() |

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:
|
1 |
python3 server.py |
![]()
Egy új terminálból a curl parancsot használhatjuk kérés küldésére a szervernek:
|
1 |
curl -iv localhost:8080 |

Alternatív megoldásként elérheti a linket egy webböngészőben is:
|
1 |
http://localhost:8080 |
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:
|
1 |
touch Dockerfile |
Most bevezetjük a szükséges kódokat. Nyissa meg egy szövegszerkesztőben:
|
1 |
nano Dockerfile |
Adja meg a következő kódot:
|
1 2 3 4 5 6 7 8 9 |
FROM python:latest ENV SRC_DIR /usr/bin/src/test_server/src COPY src/* ${SRC_DIR}/ WORKDIR ${SRC_DIR} ENV PYTHONUNBUFFERED=1 CMD ["python", "server.py"] |
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:
|
1 |
docker build . -t python_server |

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:
|
1 |
docker run -p 8080:8080 python_server |

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:
|
1 |
curl -iv localhost:8080 |
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:
|
1 |
docker images |

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:
|
1 |
docker save python_server:latest > python_server.tar |

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:
|
1 |
docker load < python_server.tar |
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:
-
Flask-alkalmazás készítése és telepítése Dockerrel Ubuntu 20.04-en
-
Django-alkalmazás biztosítása és skálázása Docker, Nginx és Let’s Encrypt segítségével
Kellemes számítógép-használatot!




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