Späť na blog

Kontajnerizácia Python aplikácie pomocou Dockeru

Kontajnerizácia Python aplikácie pomocou Dockeru

Docker je bezplatné a open-source riešenie na vývoj, nasadzovanie a správu aplikácií v ľahkej virtualizácii na úrovni operačného systému. V tejto príručke si ukážeme vytvorenie Python aplikácie v Docker kontajneri.

Požiadavky

Na vykonanie krokov znázornených v tejto príručke budete potrebovať nasledujúce komponenty:

Docker kontajnery

Pri spúšťaní rôznych programov v rovnakom prostredí sa veci môžu (a budú) kaziť. Čím viac programov pridáte, tým bude nestabilnejšie. Pre bežných ľudí to nemusí byť veľký problém. Avšak, pokiaľ ide o kritické aplikácie, môže to mať vážne následky.

Čím viac aplikácií je v systéme zavedených, tým väčšia je plocha na útok. Jediná kompromitovaná aplikácia môže ľahko viesť k pádu celého systému.

Na vyriešenie týchto problémov môžeme použiť Docker kontajnery na sandboxing na softvérovej úrovni:

  • Aplikácie v kontajneri budú mať obmedzený prístup k súborom.

  • Kontajnerizované aplikácie nemôžu vidieť iné procesy bežiace v systéme.

  • Kontajneru môže byť pridelené špecifické množstvo hardvérových prostriedkov.

  • Sieťové porty kontajnera nie sú vystavené navonok.

  • Konzistentné balenie takmer čohokoľvek naprieč lokálnymi/produkčnými prostrediami.

Na demonštráciu vytvoríme jednoduchý Python server v Docker kontajneri, transformujeme kontajner na obraz a nasadíme tento obraz v testovacom produkčnom prostredí.

Step 1 – Filesystem Configuration

Na hosťovanie projektu najprv vytvoríme vyhradený adresár:

V adresári vytvorte podadresár src na uloženie nášho kódu:

Step 2 – Building the Python Server

V tomto kroku vytvoríme jednoduchý HTTP server v Pythone. Vytvorte súbor server.py:

Otvorte ho v textovom editore:

Zadajte nasledujúci kód v Pythone:

Tu,

  • Používame triedu HTTPServer a požadujeme handler zo štandardnej knižnice Pythonu, čím udržiavame program jednoduchý.

  • Funkcia run inicializuje inštanciu HTTPserver.

  • Ako naznačujú argumenty server_address, server bude počúvať na akomkoľvek prichádzajúcom pripojení na porte 8080.

Teraz overíme, či server funguje podľa očakávania. Spustite server:

Z nového terminálu môžeme použiť curl na odoslanie požiadavky na server:

Prípadne môžete prejsť na odkaz vo webovom prehliadači:

Step 3 – Creating a Dockerfile

Súbor Dockerfile  obsahuje potrebné inštrukcie na vygenerovanie Docker obrazu. Inštrukcie v súbore sa vykonávajú postupne. Prečítajte si viac o Dockerfile.

Vytvorte nový Dockerfile pre náš projekt:

Teraz doň vložíme potrebný kód. Otvorte ho v textovom editore:

Zadajte nasledujúci kód:

Tu,

  • Každý Dockerfile musí začínať inštrukciou FROM . V našom prípade deklarujeme Python ako základ Docker obrazu.

  • Inštrukcia ENV SRC_DIR špecifikuje umiestnenie adresára v kontajneri.

  • Inštrukcia COPY kopíruje súbory z adresára src , v ktorom sa momentálne nachádza Python server.

  • Premenná PYTHONBUFFERED=1 určuje, že Python bude vypisovať a zaznamenávať výstup priamo do STDOUT. V opačnom prípade by sa logy neodosielali do žiadneho bufferu.

  • Inštrukcia CMD špecifikuje predvolený príkaz, ktorý sa má spustiť pri spustení kontajnera. V tomto prípade používame túto inštrukciu na spustenie nášho Python servera.

Krok 4 – Generovanie Docker obrazu

Keď je Dockerfile pripravený, môžeme vytvoriť obraz. Spustite nasledujúci príkaz Docker na spustenie procesu:

Tu,

  • Príznak -t sa používa na označenie nášho Docker obrazu ako python_server.

  • Docker stiahne všetky potrebné komponenty a spojí ich do obrazu.

Krok 5 – Spustenie obrazu

Obraz je pripravený na nasadenie. Môžeme ho spustiť pomocou nasledujúceho príkazu:

Tu presmerovávame port 8080 z lokálneho stroja do Docker obrazu pomocou príznaku -p.

Môžeme ľahko overiť, či server beží, pomocou curl:

Krok 6 – Ukončenie servera

V termináli stlačte “Ctrl + C” na ukončenie procesu Docker:

Krok 7 – Export a import Docker obrazu

Teraz máme funkčný Docker obraz, ktorý hostuje náš Python server. S pomocou funkcií exportu a importu v Docker ho môžeme migrovať na akýkoľvek iný systém.

Najprv skontrolujte zoznam Docker obrazov v aktuálnom systéme:

Naším cieľom je Docker obraz python_server , ktorý sme práve vytvorili. Nasledujúci príkaz ho exportuje ako archív TAR:

Po prenose súboru python_server.tar do cieľového stroja použite na import Docker obrazu nasledujúci príkaz:

Záverečné myšlienky

V tejto príručke sme demonštrovali vytvorenie Docker obrazu z Python aplikácie. Vytvorili sme jednoduchý Python webový server a z neho sme zostavili Docker obraz. Docker obraz je teraz možné nasadiť v akomkoľvek prostredí a očakávať konzistentné správanie.

Máte záujem dozvedieť sa viac o Docker? Pozrite si nasledujúce príručky:

Príjemnú prácu s počítačom!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.