Docker je bezplatné open-source řešení pro vývoj, nasazování a správu aplikací v odlehčené virtualizaci na úrovni operačního systému. V tomto průvodci si ukážeme vytvoření aplikace Python v kontejneru Docker.
Předpoklady
K provedení kroků ukázaných v tomto průvodci budete potřebovat následující komponenty:
-
Systém Linux. Podívejte se na konfiguraci vlastního Ubuntu VPS na CloudSigma.
-
Nainstalovanou a nakonfigurovanou nejnovější verzi Dockeru. Více se dozvíte v článku o instalaci Dockeru na Ubuntu.
Kontejnery Docker
Při spouštění různých programů ve stejném prostředí se věci mohou (a budou) rozbíjet. Čím více programů přidáte, tím nestabilnější prostředí bude. Pro běžné uživatele to nemusí být velký problém. Pokud však jde o kriticky důležité aplikace, mohou nastat vážné důsledky.
Čím více aplikací je do systému přidáno, tím větší je plocha útoku. Jediná kompromitovaná aplikace může snadno vést k pádu celého systému.
K vyřešení těchto problémů můžeme použít kontejnery Docker pro sandboxing na softwarové úrovni:
-
Aplikace v kontejneru budou mít omezený přístup k souborům.
-
Kontejnerizované aplikace nevidí ostatní procesy běžící v systému.
-
Kontejneru lze přidělit konkrétní množství hardwarových prostředků.
-
Síťové porty kontejneru nejsou vystaveny navenek.
-
Konzistentní balení téměř čehokoli napříč lokálním a produkčním prostředím.
Pro ukázku sestavíme jednoduchý server Python v kontejneru Docker, převedeme kontejner na image a nasadíme image ve fiktivním produkčním prostředí.
Krok 1 – Konfigurace souborového systému
Pro hostování projektu nejprve vytvoříme vyhrazený adresář:
V adresáři vytvořte podadresář src pro uložení našeho kódu:

Krok 2 – Vytvoření serveru Python
V tomto kroku vytvoříme jednoduchý HTTP server v Pythonu. Vytvořte soubor server.py:
Otevřete jej v textovém editoru:

Zadejte následující kód Python:

Zde:
-
Používáme třídu HTTPServer a vyžadujeme obslužnou rutinu ze standardní knihovny Pythonu, aby program zůstal jednoduchý.
-
Funkce run inicializuje instanci HTTPserver.
-
Jak napovídají argumenty server_address, server bude naslouchat jakémukoli příchozímu připojení na portu 8080.
Nyní ověříme, zda server funguje podle očekávání. Spusťte server:
![]()
Z nového terminálu můžeme použít curl k odeslání požadavku na server:

Případně můžete odkaz otevřít ve webovém prohlížeči:

Krok 3 – Vytvoření Dockerfile
Dockerfile obsahuje nezbytné instrukce pro vytvoření image Docker. Instrukce v souboru se provádějí postupně. Další informace o Dockerfile.
Vytvořte nový Dockerfile pro náš projekt:
Nyní do něj vložíme potřebný kód. Otevřete jej v textovém editoru:
Zadejte následující kód:
Zde:
-
Každý Dockerfile musí začínat direktivou FROM. V našem případě deklarujeme Python jako základ image Docker.
-
Direktiva ENV SRC_DIR určuje umístění adresáře kontejneru.
-
Direktiva COPY kopíruje soubory z adresáře src, který aktuálně hostuje server Python.
-
Proměnná PYTHONBUFFERED=1 určuje, že Python bude tisknout a zapisovat výstup přímo do STDOUT. Jinak by se protokoly neposílaly do žádného bufferu.
-
Direktiva CMD určuje výchozí příkaz, který se spustí při spuštění kontejneru. V tomto případě ji používáme ke spuštění našeho serveru Python.
Krok 4 – Vygenerování image Docker
Když je Dockerfile připravený, můžeme nyní vytvořit image. Spusťte následující příkaz Docker pro zahájení procesu:

Zde:
-
Příznak -t se používá k označení naší image Docker jako python_server.
-
Docker stáhne všechny potřebné komponenty a spojí je do image.
Krok 5 – Spuštění image
Image je připravena k nasazení. Můžeme ji spustit pomocí následujícího příkazu:

Zde přesměrováváme port 8080 z lokálního počítače do image Docker pomocí příznaku -p.
Pomocí curl můžeme snadno ověřit, zda je server spuštěný:

Krok 6 – Ukončení serveru
V terminálu stiskněte “Ctrl + C” pro ukončení procesu Docker:

Krok 7 – Export a import image Docker
Nyní máme funkční image Docker hostující náš server Python. Pomocí funkcí exportu a importu Dockeru ji můžeme migrovat do libovolného jiného systému.
Nejprve zkontrolujte seznam image Docker v aktuálním systému:

Naším cílem je image Docker python_server, kterou jsme právě vytvořili. Následující příkaz ji exportuje jako archiv TAR:

Po přenosu souboru python_server.tar do cílového počítače použijte následující příkaz k importu image Docker:

Závěrečné myšlenky
V tomto průvodci jsme si ukázali vytvoření image Docker z aplikace Python. Vytvořili jsme jednoduchý webový server Python a vytvořili z něj image Docker. Image Docker lze nyní nasadit v libovolném prostředí a očekávat konzistentní chování.
Chcete se o Dockeru dozvědět více? Podívejte se na následující průvodce:
-
Sestavení a nasazení aplikace Flask s Dockerem na Ubuntu 20.04
-
Jak zabezpečit a škálovat aplikaci Django pomocí Dockeru, Nginx a Let’s Encrypt
-
Jak nasadit WordPress pomocí kontejnerů Docker na Ubuntu 20.04
Přejeme příjemnou práci s počítačem!

Komentáře
Zatím žádné komentáře. Buďte první.