Programování

Recenze: Alpine Linux je určen pro Docker

Alpine Linux je minimální distribuce Linuxu, původně vytvořená s Gentoo, ale nyní nezávislá a vlastní hosting. V některých ohledech je Alpine Linux koncepčně podobný NanoBSD v tom, že techničtí uživatelé mohou začít s Alpine Linuxem vybudovat systém Linux s tím, co je pro splnění mise potřeba, a nic víc.

Alpine Linux, který je obvykle vidět v zařízeních nebo zařízeních, získal velkou podporu, když byl vybrán, aby nahradil Ubuntu jako základní obrázek pro Docker. Bezpečnost, spolehlivost a solidní vývojové postupy byly hlavními důvody.

Alpine Linux se nepodobá žádné linuxové distribuci, se kterou se setká typický uživatel stolního počítače se systémem Linux. Začněme tím, že se podíváme do adresáře / bin, kde jsou uloženy systémové nástroje:

Všimněte si, že téměř všechny binární soubory jsou odkazy na / bin / busybox. Busybox je sada běžných uživatelských a systémových nástrojů zabalených do jediného binárního souboru pro rychlejší spuštění, nižší nároky na prostor a obecně lepší zabezpečení za cenu snížené funkčnosti. Mnoho zřídka používaných možností obslužných programů bylo odstraněno, ale všechny běžně používané možnosti zůstanou.

Kromě toho Alpine používá musl libc, minimální implementaci standardní knihovny a rozšíření C / POSIX, které jsou navrženy pro statické propojení a vložené aplikace v reálném čase, čímž se vyhýbá GNU-bloat glibc. Statické propojení znamená rychlejší spuštění, ale vyžaduje více místa, takže se nejlépe hodí pro menší systémy. Kombinací všech systémových binárních souborů do jediného spustitelného souboru a propojením s musl získá Alpine malou a rychlou sadu systémových binárních souborů, což je to, co je vyžadováno v integrovaném systému.

Nakonec se zaměřuje na bezpečnost. Systém obsahuje opravy jádra Grsec / PaX, které poskytují jádru Linuxu řadu bezpečnostních funkcí včetně ochrany adresního prostoru, vylepšeného auditu a přístupu na základě rolí a řízení procesů. U typických linuxových distribucí by uživatelé museli tyto patche kompilovat a provozovat vlastní jádro, čehož by se pravděpodobně vyhnuli i ti nejpokročilejší uživatelé.

Alpine Linux instalace a konfigurace

Instalace Alpine Linux je neobvyklá. To je většinou zakořeněno v původním zamýšleném použití ve vestavěných systémech, jako jsou směrovače. Jako takový je Alpine navržen tak, aby se spouštěl a spouštěl z RAM, ačkoli jsou k dispozici hybridní možnosti. V souladu s tímto původem používá Alpine Linux jako bootloader extlinux, variantu Syslinux. Syslinux se běžně nepoužívá pro zavádění plných instalací Linuxu, protože Linux se běžně neinstaluje na souborové systémy FAT. Místo toho se Syslinux často používá k zavádění nebo záchraně disket, živých USB a jiných lehkých zaváděcích systémů. Alpine využívá části projektu Syslinux k zavedení systému z CD-ROM a používá extlinux k zavedení ze souborových systémů Linux nebo FAT pro USB zařízení. Souborové systémy FAT mají určitá omezení, například velikost souborů a délku názvů souborů.

Alpine podporuje tři instalační režimy: bezdiskové, „datové“ a „sys“. V datové instalaci je operační systém načten do paměti RAM z média jen pro čtení, ale připojuje oddíly pro čtení a zápis k ukládání dat. To může být použito, například pokud router založený na Alpine ukládal narušení nebo přístupové protokoly na disk. Kopírování protokolů do paměti RAM by bylo plýtváním cenným zdrojem. Režim bez disku je podobný, ale oddíl pro čtení a zápis je obvykle menší a slouží k ukládání podrobností o konfiguraci operačního systému. Sys je tradiční instalační režim založený na disku.

Při instalaci v bezdiskovém nebo datovém režimu se k ukládání konfiguračních souborů používá systém Alpine Local Backup. To se provádí pomocí lbu (místní zálohovací nástroj), který sleduje soubory, které se změnily v adresáři / etc, a uloží tyto změny do souborů "overlay" .apkovl (archivy tar-gzip). S lbu mohou správci například porovnávat, slučovat nebo se vrátit k předchozím konfiguracím.

Začal jsem pokusem o instalaci bez disku, protože jsem chtěl spustit Alpine, jak bylo původně zamýšleno, jako OS pro zařízení. Bohužel jsem narazil na dlouhodobou chybu (2015) v instalaci VMware, která nebyla opravena, ani nebyla aktualizována dokumentace. Zdá se, že virtuální disketa není připojena v době bootování. To znamená, že při každém restartu dojde ke ztrátě konfiguračních změn.

Nakonec jsem se uchýlil k instalaci sys, která šla dobře. První věc, kterou si všimnete, je nic, ve výchozím nastavení není nainstalován ani SSH. Pokud budujete vestavěné systémy, je to pravděpodobně dobrá věc. Linuxoví nováčci by se měli připravit na strmou křivku učení. Poté, co jsem si přečetl něco o Alpine Package Manager (APK), nainstaloval jsem pro začátek minimální sadu nástrojů: Sudo, SSH a webový nástroj pro správu grafického systému ACF.

Správa systému Alpine Linux

Zatímco většina systémů Linux má grafický nástroj pro správu systému, Alpine používá pro nastavení shell skripty. Použil jsem zastřešující skript, setup-alpine, ke konfiguraci všech základů, jako je síť, název hostitele, disky, časové pásmo atd. Ačkoli setup-alpine je dostačující k získání fungujícího systému, všechno pokročilejší bude vyžadovat úpravy konfiguračních souborů systému přímo a pomocí lbu uložit je na zapisovatelná média. Všimněte si, že setup-alpine je také instalační program, takže lze zadat název disku a zapíše operační systém na médium s výzvou k zapisovatelnému oddílu pro adresáře / etc a / var.

Vývoj a distribuce softwaru se také u Alpine liší. Částečně je to kvůli jeho zamýšlenému použití ve vestavěných systémech nebo jako základní image pro kontejnery, ale také proto, že autoři cítili, že stávající systémy pro správu balíčků nebudou dobře fungovat v systému, který obvykle běží z RAM. Alpine Package Manager (APK) splňuje všechny tyto požadavky, s nízkou režií a rychlou instalací. Přál bych si však, aby vrstvili přes API, které bylo standardnější. Již máme dostatek API pro správu balíků a je třeba něco říci o kompatibilitě. APK se používá ke konfiguraci kontejnerů nebo samostatných systémů.

Doručování balíků probíhá prostřednictvím stromu portů, který mi připomíná kolekci portů FreeBSD. Místo toho, aby byl poháněn sofistikovaným systémem makefile, používá však jiný vynález Alpine Linux, abuild. Úložiště aports zrcadlí strom portů po celém světě a apk přidat ... je rozhodně mnohem rychlejší než jiné systémy pro správu balíků.

Další věcí, kterou si na Alpine všimnete, je použití OpenRC pro systém init. Jeden z tuctu systémů init pro Linux, OpenRC začal v Gentoo (stejně jako Alpine). Funkčně nic nechybí, ale buďte připraveni naučit se nový systém úrovní běhu a příkazů init.

Naštěstí většinu každodenní správy lze provést prostřednictvím webového Alpine Configuration Framework (ACF), i když práce s ACF nebyla úplně plynulá. Nezjistilo to běžného uživatele, kterého jsem pro sebe přidal přidat uživatele, například. ACF GUI vypadá hodně jako webové rozhraní vašeho typického routeru založeného na Linuxu:

ACF také potřebuje kopat, aby našel a nainstaloval. Příležitostný uživatel by systém neobjevil, pokud by nebyl pozorný, a přesto neexistují žádné pokyny k instalaci.

Úložiště a sítě Alpine Linux

Alpine podporuje několik možností úložiště nad rámec pouze RAM, s konfigurací uloženou na médiu a flash kartami. Dokumentace, nebo spíše její nedostatek, však ztěžovala porozumění ukládání. Například jsem chtěl vypálit vlastní ISO pomocí aplikace, která není k dispozici v aportech, což je pravděpodobně dost běžný výskyt. Dokumentace k tomu byla slepá ulička:

Čtyři a půl roku se zdá být dlouhá doba čekání. Abych byl spravedlivý, úložiště nikdy nebylo velkou součástí alpské rovnice, protože se zaměřuje na vestavěné aplikace, takže není překvapením, že by to měla být slabá oblast. Ve většině oblastí očekávaných od distribuce Linuxu, jako jsou LVM, iSCSI a RAID, stále probíhají práce, ale připravte se na to, abyste věnovali smysl dokumentaci, nebo si přečíst zdrojový kód, abyste na to přišli.  

Síť s Alpine je velmi odlišný příběh než úložiště. Dokumentace pro práci v síti je lépe napsaná a úplnější a často obsahuje osvědčené postupy pro nastavení efektivních sítí. IP4, IP6, bonding, VLAN, přemostění a téměř jakékoli požadované nastavení sítě je podporováno. Najdete dokonce pokyny pro nastavení satelitního připojení k internetu!

Konfiguraci lze provést tradičními nástroji, jako je ifconfig a route, nebo některými novějšími balíčky, jako je iproute2. Za zmínku stojí zajímavý subprojekt s názvem Alpine Wall, konfigurační nástroj linuxové brány firewall. Je podporováno i PPP přes sériové linky, což je v dnešní době poněkud překvapivé.

Četl jsem tuto dokumentaci hodně, objevil jsem několik konfiguračních rad, které jsem předtím neznal, stejně jako některé dosud neznámé síťové nástroje. Tato část dokumentace stojí za přidání do záložek jako rychlá reference pro síťové postupy, i když nepoužíváte Alpine Linux.

Upgrade a downgrade systému Alpine Linux

Alpine Linux release engineering není zdaleka tak přísný nebo formální jako vyspělé systémy jako FreeBSD, ale pokrývá základní rysy. A je vhodný pro primární případy použití a hostování zařízení Docker společnosti Alpine.

Existují v zásadě dva proudy, okrajové a stabilní. Edge je větev s postupným uvolňováním, snímek místa, kde se vývoj děje každých šest měsíců. Balíčky se pohybují přes okraj a jakmile budou připraveny, budou povýšeny do stáje / komunity, kde jsou komunitou podporovány po dobu šesti měsíců. Balíčky, které to přežijí a nadále se vyvíjejí, se nakonec dostanou do stabilní / hlavní, kde jsou podporovány dva roky.

Při upgradu z větve 2.x na 3.x je třeba dávat trochu pozor kvůli změně v knihovnách C (z uClibc na musl). Pokud si nedáte pozor, mohl by systém v polovině aktualizace selhat. Upgrade balíčků podél řádku 3.x je jednodušší, přesto je to stále manuální proces poháněný většinou skripty. Trik, jak porozumět procesu upgradu, je získat správné úložiště APK (komunitní, hranové nebo hlavní), vyčistit mezipaměť a poté nechat APK upgradovat všechny balíčky pomocí upgrade apk.

Upgrade jádra je také přímočarý a pomocí spouštěcího skriptu pro zápis se nové jádro a busybox zapíše na spouštěcí médium.

Celkově není v systému Alpine příliš mnoho pohyblivých částí, takže jakmile je architektura pochopena, není obtížné zjistit, zda je upgrade.

Alpine Linux v kostce

Alpine Linux je skvělou volbou pro jakýkoli systém, který je síťově orientovaný a jednoúčelový. Detekce narušení, monitorování sítě a IP telefonie jsou příklady dobrých aplikací pro Alpine Linux. A pro kontejnery je to přirozená volba. Aplikace, které disk hojně využívají, by měly být pečlivě testovány. Uživatelé by se měli připravit na to, že stráví nějaký čas zapojením se do komunity a vyhrnou si rukávy, aby si ušpinili ruce. Bude vyžadována zkouška a chyba.

$config[zx-auto] not found$config[zx-overlay] not found