GNU/Linux >> Znalost Linux >  >> Linux

Jak kontejnerizovat starší aplikace

Úvod

Organizace po celém světě přijímají k poskytování softwaru přístup založený na mikroslužbách a kontejnerech. Většina softwaru však byla navržena a napsána dříve, než existovaly moderní kontejnery založené na obrázcích.

Pokud plánujete přechod na model nasazení kontejnerů Docker, musíte zvážit dopady, které bude mít migrace na vaše stávající aplikace.

Tento výukový program popisuje požadované přípravné práce a základní příkazy Dockeru pro kontejnerování starších aplikací.

Proč kontejnerovat starší aplikace?

Společnosti, které implementují kontejnerový software, potřebují restrukturalizovat svou organizaci, aby odrážela procesy nového kontejnerového workflow. Analýza potenciálních výhod nasazení kontejneru je užitečná pro určení nejlepšího přístupu pro vaši aplikaci.

Efektivita a přenositelnost

Nasazení kontejnerů může být efektivním řešením, protože kontejnery obvykle začínají během několika sekund. Obraz kontejneru obsahuje všechny binární soubory, knihovny a závislosti, což znamená, že není potřeba přidávat konfigurace specifické pro prostředí. Stejný obraz je nyní přenosný mezi více systémy. Obraz je bez environmentálních omezení, takže nasazení je spolehlivé, přenosné a škálovatelné. Kontejnerováním aplikací oddělíte souborový systém a runtime od jejich hostitele.

Údržba a škálování

Namísto správy rozsáhlé monolitické aplikace vytvoříte architektonický vzor, ​​ve kterém se složité aplikace skládají z malých nezávislých procesů, které spolu komunikují pomocí rozhraní API.

Řešením konfliktů aplikací mezi různými prostředími mohou vývojáři sdílet svůj software a závislosti s provozy IT a produkčními prostředími. Vývojáři a IT operace jsou pevně svázáni a mohou efektivně spolupracovat. Kontejnerový pracovní postup poskytuje Dev Ops kontinuitu, kterou potřebují. Schopnost identifikovat problémy na začátku vývojového cyklu snižuje náklady na generální opravu v pozdější fázi.

Nástroje pro správu kontejnerů

Nástroje pro správu kontejnerů třetích stran poskytují mechanismus pro vytváření sítí, monitorování a trvalé úložiště pro kontejnerové aplikace. Starší aplikace mohou využívat výhod nejmodernějších orchestračních rámců, jako je Kubernetes.

Tyto nástroje zlepšují dobu provozuschopnosti, analytické schopnosti a usnadňují sledování stavu aplikací.

Plán pro kontejnery

Chcete-li úspěšně migrovat své aplikace, musíte vyvinout strategii, která prověří potřeby vašich aplikací ve spojení s povahou kontejnerů. Na technické úrovni lze libovolnou aplikaci nasadit v kontejneru. Existuje několik možných řešení pro nasazení starší aplikace v kontejneru:

1. Zcela přepište a přepracujte svou starší aplikaci.

2. Spusťte existující monolitickou aplikaci v rámci jednoho kontejneru.

3. Rozšiřte a přetvářejte aplikace, aby mohly využívat výhod nové distribuované architektury.

Bez ohledu na zvolenou cestu je zásadní správně identifikovat, zda je aplikace v první řadě dobrým kandidátem pro nasazení v prostředí kontejneru. Je třeba se zaměřit na architekturu, výkon a zabezpečení.

Architektura

Aplikace je třeba rozložit na jednotlivé služby, aby je bylo možné individuálně škálovat a nasazovat. Chcete-li plně využít nasazení kontejnerů, zjistěte, zda je možné rozdělit vaši stávající aplikaci do více kontejnerů.

V ideálním případě by měl být jeden proces přiřazen k jednomu kontejneru. Dokonce i úlohy cron by měly být externalizovány do samostatných kontejnerů. To může vyžadovat přepracování architektury vaší aplikace.

Výkon

Zjistěte, zda má vaše aplikace specifické hardwarové požadavky. Kontejnery používají funkce Linuxu, které rozdělují základní jádro. Může být nutné nakonfigurovat jednotlivé kontejnery s jedinečnými parametry nebo poskytnout specifické zdroje.

Dále vezměte v úvahu, že Docker nemá init démona vyčistit zombie procesy. Ujistěte se, že jste jeden uvedli jako VSTUPNÍ BOD ve vašem dockerfile. Zvažte dumb.ino jako možné odlehčené řešení.

Zabezpečení

Kontejnery nabízejí menší izolaci než virtuální počítače a je důležité definovat úroveň zabezpečení, kterou vaše aplikace potřebuje. Nastavte přísná omezení uživatelských a servisních účtů. Udržujte tajemství a hesla izolována od obrázků kontejnerů, dodržujte zásady nejmenších oprávnění a udržujte hloubkovou ochranu pro zabezpečení clusterů Kubernetes.

Požadavky na trvalou paměť

Při orchestraci kontejnerů se všechna trvalá data neukládají do zapisovatelné vrstvy kontejnerů. Místo toho se trvalá data ukládají do jasně definovaných trvalých svazků. Tento přístup zajišťuje, že trvalá data nezvětšují velikost kontejneru a existují nezávisle na životním cyklu kontejneru.

Pokud jsou trvalá data vaší starší aplikace rozmístěna v systému souborů nebo jsou zapsána do cest sdílených se samotnou aplikací, doporučujeme restrukturalizovat aplikaci tak, aby zapisovala všechna trvalá data do jediné cesty v systému souborů. To zjednoduší migraci dat aplikací do kontejnerového prostředí.

Externalizace služeb

Identifikujte místní služby, které mohou být externalizovány a provozovány v samostatných kontejnerech. Hledejte caching a databázové služby, ty lze externalizovat nejsnáze. Alternativně můžete chtít používat spravované služby místo toho, abyste je konfigurovali a spravovali sami.

Připravte obrázek pro více prostředí

Očekává se, že budete používat jeden obraz Dockeru ve vývojovém, QA a produkčním prostředí. Vezměte v úvahu konfigurační proměnné specifické pro prostředí. Pokud nějaké identifikujete, budete muset napsat spouštěcí skript, který aktualizuje výchozí konfigurační soubory aplikace.

Nasazení starší aplikace do kontejnerů

Za předpokladu, že je Docker ve vašem systému spuštěný, existuje několik způsobů, jak vytvořit obraz Dockeru:

  1. Použijte prázdný obrázek a přidejte další vrstvy importem sady externích souborů.
  2. Pomocí příkazového řádku interaktivně zadávejte jednotlivé příkazy Dockeru a vytvořte nový obrázek pomocí docker commit .
  3. Použijte sofistikovaný nástroj pro správu konfigurace (např. jako Puppet a Chef) pro komplexní nasazení.
  4. Použijte existující základní obrázek a zadejte sadu příkazů v Dockerfile .

Dockerfiles jsou vynikajícím výchozím bodem pro pochopení toho, jak používat modul runtime kontejneru k vytvoření obrázku. Pokud uděláte chybu, můžete soubor snadno upravit a vytvořit nový obrázek kontejneru pomocí jediného příkazu.

Dockerfile starší aplikace

Dockerfile je jednoduchý textový soubor se sadou příkazů spouštěných v přísném pořadí. Dockerfiles jsou obvykle založeny na existujících obrázcích, jen s několika dalšími nastaveními. Pomocí rozhraní příkazového řádku vytvořte adresář, který obsahuje soubory, které potřebujete pro sestavení:

mkdir ImageForLegacyApp
cd ImageForLegacyApp

Jakmile se spustí proces sestavení, soubory v tomto adresáři jsou odeslány démonovi Docker. Omezením počtu souborů urychlíme proces sestavování a šetříme místo na disku.

Pomocí preferovaného textového editoru pro kódování nebo programování (používáme vim) vytvořte prázdný soubor Dockerfile v rámci ImageForLegacyApp adresář:

vim Dockerfile

Následující pokyny k sestavení jsou určeny pro jednoduchou aplikaci PHP. Začneme stažením operačního systému s nainstalovaným PHP a Apache.

FROM php:apache

FROM je první instrukce v Dockerfile. Definuje základní obraz, v tomto příkladu Debian OS s nainstalovaným PHP a Apache. Pokud chcete konkrétní verzi základního obrázku, nezapomeňte použít odpovídající značku (například php:7.0-apache ).

COPY ./var/www/html

Použijte COPY příkaz pro zkopírování vašeho PHP kódu do obrázku. Použijte ADD Pokud je nutná extrakce dehtu, použijte příkaz.

WORKDIR /var/www/html

Toto definuje pracovní složku. Všechny následující příkazy se použijí na tuto složku.

EXPOSE 80

Pomocí EXPOSE nastavte port, kterému má aplikace naslouchat příkaz. Jakmile spustíte bitovou kopii a propojíte běžící bitovou kopii s jiným kontejnerem, exponovaný port bude k dispozici druhému kontejneru, jako by byl ve stejném lokálním systému.

CMD [“php”, “./legacy_app.php”]

Použijte CMD příkaz k identifikaci výchozího příkazu, který se má spustit z obrazu, spolu s možnostmi, které mu chcete předat. V souboru Dockerfile můžete mít pouze jeden řádek CMD.

LABEL version="1.1"

Používáme LABEL instrukce k přidání metadat k obrázku. Kromě štítku, který přiřadíte, obrázek vytáhne všechny štítky přiřazené k nadřazenému obrázku vyvolanému pomocí FROM příkaz.

Vytvoření obrázku Docker

Úspěšně jsme definovali instrukce v rámci Dockerfile. Spusťte proces sestavení zadáním následujícího příkazu do příkazového terminálu:

docker build -t legacyapp [location_of_Dockerfile]

Během procesu sestavení obdrží každý obrázek jedinečné ID. Pro snadné vyhledání a identifikaci obrázku v registru použijte -t příkaz k pojmenování obrázku. V tomto příkladu bude obrázek pojmenován legacyapp .

docker build -t legacyapp .
  1. docker build příkaz dává pokyn démonovi Docker, aby vytvořil obraz založený na souboru Docker.
  2. Cesta zadaná k docker build příkaz se používá pro nahrávání souborů a adresářů.
  3. Každý krok sestavení je očíslován, jak démon Docker pokračuje ve spouštění příkazů ze souboru Docker.
  1. Každý příkaz vytvoří nový obrázek. A ID obrázku se zobrazí na obrazovce.
  2. Před pokračováním k dalšímu kroku je každý mezilehlý ukotvitelný kontejner odstraněn, aby se ušetřilo místo na disku.

Obraz Dockeru je připraven a vy jste obdrželi unikátní referenci ID. Navíc jsme nepoužili značku verze, takže Docker automaticky označil obrázek jako :latest .

Spuštění obrázku Docker

Obrázek je nyní připraven k nasazení. docker run dílčí příkaz spustí kontejner:

sudo docker run --name apache2 legacyapp

--name argument poskytuje kontejneru jedinečný název, zatímco legacyapp argument představuje název statického obrazu dockeru, který jsme vytvořili.

Chcete-li zobrazit seznam kontejnerů, které byly spuštěny a odstraněny, zadejte následující příkaz:

docker ps -a

Výstup poskytuje přehled spolu s ID kontejneru a stavem.

Přejděte na localhost zkontrolovat, zda je vaše aplikace správně poskytována serverem Apache.


Linux
  1. Jak zlepšit dobu spouštění aplikací v Linuxu

  2. Jak nainstalovat aplikaci Spotify na Linux

  3. Jak jsou v Linuxu chráněny soubory vzájemně nedůvěryhodných aplikací?

  1. Jak používat Podman uvnitř kontejneru

  2. Jak změnit výchozí aplikace Debianu

  3. Jak opustit kontejner Docker

  1. Jak automaticky spouštět aplikace na Ubuntu 22.04 Jammy Jellyfish Linux

  2. Jak nastavit aplikaci Elastic Beanstalk na AWS

  3. Jak omezit využití paměti aplikace?