Programovanie

Recenzia: Alpine Linux je určený pre Docker

Alpine Linux je minimálna distribúcia Linuxu, pôvodne vytvorená spoločnosťou Gentoo, teraz však nezávislá a hostujúca sa na serveroch. V niektorých ohľadoch je Alpine Linux koncepčne podobný NanoBSD v tom zmysle, že technickí používatelia môžu začať s Alpine Linuxom vybudovať systém Linux s tým, čo je potrebné na splnenie úlohy, a nič viac.

Alpine Linux, ktorý sa zvyčajne nachádza zabudovaný v zariadeniach alebo zariadeniach, získal veľkú podporu, keď bol vybraný ako náhrada Ubuntu ako základného obrazu pre Docker. Hlavnými dôvodmi boli bezpečnosť, spoľahlivosť a spoľahlivé vývojové postupy.

Alpine Linux sa nepodobá na žiadnu distribúciu Linuxu, s ktorou sa stretne typický užívateľ desktopu Linux. Na úvod sa pozrieme do adresára / bin, kde sú uložené systémové nástroje:

Všimnite si, že takmer všetky binárne súbory sú odkazy na / bin / busybox. Busybox je sada bežných používateľských a systémových nástrojov zabalených do jedného binárneho súboru na rýchlejšie spustenie, nižšie nároky na priestor a všeobecne lepšie zabezpečenie za cenu zníženej funkčnosti. Mnoho zriedka používaných možností pre obslužné programy bolo odstránených, ale všetky bežne používané možnosti zostávajú.

Okrem toho Alpine používa musl libc, minimálnu implementáciu štandardnej C / POSIX knižnice a rozšírení, určených pre statické prepojenie a vstavané aplikácie v reálnom čase, aby sa zabránilo GNU-bloat z glibc. Statické prepojenie znamená rýchlejšie spustenie, ale zaberá viac miesta, takže je najvhodnejšie pre menšie systémy. Kombináciou všetkých systémových binárnych súborov do jedného spustiteľného súboru a prepojením s musl získava Alpine malú a rýchlu sadu systémových binárnych súborov, čo je v prípade zabudovaného systému potrebné.

Nakoniec sa treba sústrediť na bezpečnosť. Systém obsahuje opravy jadra Grsec / PaX, ktoré poskytujú súbor bezpečnostných funkcií pre jadro Linuxu, vrátane ochrany adresného priestoru, vylepšeného auditu a prístupu a riadenia procesov na základe rolí. Pri typických distribúciách Linuxu by používatelia museli kompilovať a prevádzkovať svoje vlastné jadro, aby získali tieto opravy, čomu by sa pravdepodobne vyhli aj najpokročilejší používatelia.

Inštalácia a konfigurácia systému Alpine Linux

Inštalácia Alpine Linuxu je neobvyklá. To má väčšinou pôvod v pôvodnom zamýšľanom použití vo vstavaných systémoch, ako sú smerovače. Alpine je ako taký navrhnutý na bootovanie a spustenie z RAM, aj keď sú k dispozícii hybridné možnosti. V súlade s týmto pôvodom používa Alpine Linux ako bootloader extlinux, variant Syslinux. Syslinux sa bežne nepoužíva na zavedenie úplných inštalácií systému Linux, pretože systém Linux sa zvyčajne nenainštaluje do súborových systémov FAT. Namiesto toho sa Syslinux často používa na bootovacie alebo záchranné diskety, živé USB disky a iné ľahké bootovacie systémy. Alpine využíva časti projektu Syslinux na zavedenie z CD-ROM a na zavedenie zo súborových systémov Linux alebo FAT pre zariadenia USB používa extlinux. Systémy FAT majú určité obmedzenia, napríklad veľkosť súborov a dĺžka názvov súborov.

Alpine podporuje tri režimy inštalácie: bezdiskový, „dátový“ a „sys“. V dátovej inštalácii sa operačný systém načíta do RAM z média iba na čítanie, ale na uloženie údajov pripojí oddiely na čítanie a zápis. Toto by sa mohlo použiť napríklad v prípade, že smerovač založený na Alpine ukladal protokoly o vniknutí alebo prístup na disk. Kopírovanie protokolov do pamäte RAM by bolo stratou cenného zdroja. Režim bez disku je podobný, ale oddiel na čítanie a zápis je zvyčajne menší a slúži na ukladanie podrobností o konfigurácii operačného systému. Sys je tradičný režim inštalácie založený na disku.

Pri inštalácii v bezdiskovom alebo dátovom režime sa systém Alpine Local Backup používa na ukladanie konfiguračných súborov. To sa deje pomocou nástroja lbu (lokálny zálohovací nástroj), ktorý sleduje súbory, ktoré sa zmenili v adresári / etc, a tieto zmeny uloží do súborov „overlay“ .apkovl (archívy tar-gzip). S lbu môžu správcovia napríklad porovnávať, zlúčiť alebo sa vrátiť k predchádzajúcim konfiguráciám.

Začal som pokusom o inštaláciu bez disku, pretože som chcel spustiť Alpine tak, ako to bolo pôvodne určené, ako operačný systém pre zariadenia. Bohužiaľ som narazil na dlhotrvajúcu chybu (2015) v inštalácii VMware, ktorá nebola opravená, ani nebola aktualizovaná dokumentácia. Zdá sa, že obraz virtuálnej diskety sa nepripojuje počas bootovania. To znamená, že zmeny konfigurácie sa stratia pri každom reštarte.

Nakoniec som sa uchýlil k inštalácii sys, ktorá prebehla v poriadku. Prvá vec, ktorú si treba všimnúť, je nič, predvolene nie je nainštalovaný ani SSH. Ak budujete zabudované systémy, je to pravdepodobne dobrá vec. Začiatočníci systému Linux by sa mali pripraviť na prudkú krivku učenia. Po krátkom prečítaní o Alpine Package Manager (APK) som si na úvod nainštaloval minimálnu sadu nástrojov: Sudo, SSH a webový nástroj na správu grafického systému ACF.

Správa systému Alpine Linux

Zatiaľ čo väčšina systémov Linux má grafický nástroj na správu systému, Alpine používa na nastavenie shell skripty. Použil som zastrešujúci skript, setup-alpine, na konfiguráciu všetkých základných informácií, ako je práca v sieti, názov hostiteľa, disky, časové pásmo atď. Aj keď je setup-alpine dostatočný na získanie funkčného systému, všetko pokročilejšie bude vyžadovať úpravu konfiguračných súborov systému priamo a pomocou lbu uložiť na zapisovateľné médiá. Upozorňujeme, že setup-alpine je tiež inštalačný program, takže je možné uviesť názov disku a zapíše operačný systém na médium s výzvou na zapisovateľný oddiel pre adresáre / etc a / var.

Vývoj a distribúcia softvéru sa líšia aj v Alpine. Čiastočne je to z dôvodu jeho zamýšľaného použitia vo vstavaných systémoch alebo ako základného obrazu pre kontajnery, ale tiež preto, lebo autori mali pocit, že existujúce systémy na správu balíkov by v systéme bežiacom z RAM nefungovali dobre. Správca balíkov Alpine Package (APK) spĺňa všetky tieto požiadavky, má nízku réžiu a rýchlu dobu inštalácie. Prial by som si však, aby sa vrstvili cez štandardnejšie API. API na správu balíkov už máme dosť a je treba povedať niečo o kompatibilite. APK sa používa na konfiguráciu kontajnerov alebo samostatných systémov.

Doručovanie balíkov sa deje prostredníctvom stromu portov, ktorý mi pripomína zbierku portov FreeBSD. Namiesto toho, aby ho poháňal sofistikovaný systém makefile, však využíva ďalší vynález Alpine Linux, abuild. Úložisko aports zrkadlí strom portov po celom svete a apk pridať ... je určite oveľa rýchlejší ako iné systémy na správu balíkov.

Ďalšou vecou, ​​ktorú si treba všimnúť na Alpine, je použitie OpenRC pre systém init. OpenRC, ktorý bol v súčasnosti asi jedným z tucta systémov Linux, začal v Gentoo (rovnako ako Alpine). Funkčne nechýba nič, buďte však pripravení naučiť sa nový systém úrovní spustenia a príkazov init.

Našťastie väčšinu dennej správy možno vykonať prostredníctvom webového Alpine Configuration Framework (ACF), aj keď práca s ACF nebola úplne plynulá. Nezistilo to bežného používateľa, cez ktorého som si ho pridal adduser, napríklad. ACF GUI vyzerá veľmi podobne ako webové rozhranie vášho typického smerovača so systémom Linux:

ACF tiež vyžaduje nejaké kopanie na vyhľadanie a inštaláciu. Príležitostný užívateľ by systém neobjavil, pokiaľ by nebol pozorný, a ani potom neexistujú žiadne inštalačné pokyny.

Úložisko a siete Alpine Linux

Alpine podporuje niekoľko možností ukladania okrem RAM, konfiguráciu uloženú na médiu a flash karty. Dokumentácia, alebo skôr jej nedostatok, však sťažila porozumenie úložiska. Napríklad som chcel napáliť vlastné ISO s aplikáciou, ktorá nie je k dispozícii v aportoch, čo je pravdepodobne dosť bežný jav. Dokumentácia k tomu bola slepá ulička:

Štyri a pol roka sa zdá byť dlhá doba čakania. Aby sme boli spravodliví, úložisko nikdy nebolo veľkou súčasťou alpskej rovnice, pretože sa zameriava na zabudované aplikácie, takže nie je prekvapením, že by malo ísť o slabú oblasť. Vo väčšine oblastí, ktoré sa očakávajú od distribúcie systému Linux, ako sú LVM, iSCSI a RAID, prebiehajú práce, pripravte sa však na to, aby ste venovali dostatok času dokumentácii, alebo prečítaním zdrojového kódu, aby ste na to prišli.  

Sieť s Alpine je úplne iný príbeh ako úložisko. Dokumentácia pre prácu v sieti je lepšie napísaná a úplnejšia a často obsahuje osvedčené postupy na nastavenie efektívnych sietí. Podporované sú IP4, IP6, bonding, VLAN, premostenie a vlastne akékoľvek požadované nastavenie siete. Nájdete dokonca aj pokyny na nastavenie satelitného internetového pripojenia!

Konfiguráciu je možné vykonať pomocou tradičných nástrojov, ako sú ifconfig a route, alebo niektorými novšími balíkmi, ako je iproute2. Za zmienku stojí zaujímavý subprojekt s názvom Alpine Wall, konfiguračný nástroj brány firewall systému Linux. Dokonca je podporované aj PPP cez sériové linky, čo je v dnešnej dobe trochu prekvapujúce.

Veľa som sa naučil čítať túto dokumentáciu, objavovať niekoľko tipov na konfiguráciu, ktoré som predtým nepoznal, ako aj niektoré doteraz neznáme sieťové nástroje. Táto časť dokumentácie sa oplatí označiť ako rýchly odkaz na postup pri vytváraní sietí, aj keď nepoužívate Alpine Linux.

Upgrade a downgrade systému Alpine Linux

Vydanie Alpine Linux nie je ani zďaleka také dôsledné alebo formálne ako vyspelé systémy ako FreeBSD, ale pokrýva základné informácie. A je vhodný pre primárne prípady použitia serverov a zariadení Docker spoločnosti Alpine.

V zásade existujú dva prúdy, okrajové a stabilné. Edge je pobočka s postupným uvoľňovaním, snímka situácie, kde sa vývoj deje každých šesť mesiacov. Balíky prechádzajú cez okraj a keď sú pripravené, sú povýšené do stajne / komunity, kde ich komunita šesť mesiacov podporuje. Balíky, ktoré to prežijú a naďalej sa vyvíjajú, sa nakoniec dostanú do stabilnej / hlavnej verzie, kde sú podporované dva roky.

Pri aktualizácii z vetvy 2.x na 3.x je potrebné dávať trochu pozor z dôvodu zmeny v knižniciach C (z uClibc na musl). Ak si nedáte pozor, systém by mohol zlyhať v polovici inovácie. Aktualizácia balíkov pozdĺž línie 3.x je jednoduchšia, aj keď je to stále manuálny proces poháňaný z väčšej časti skriptmi. Trik na pochopenie procesu aktualizácie je získať správne úložisko APK (komunitné, okrajové alebo hlavné), vyčistiť medzipamäť a potom nechať APK inovovať všetky balíčky pomocou aktualizácia apk.

Inovácia jadra je tiež jednoduchá a na napísanie nového jadra a busyboxu na bootovacie médium sa používa skript, ktorý je možné spustiť pri inštalácii.

Celkovo nie je v systéme Alpine k dispozícii príliš veľa pohyblivých častí, takže ak pochopíte architektúru, zistenie, že aktualizácia nie je zložitá.

Alpine Linux v skratke

Alpine Linux je skvelou voľbou pre každý systém, ktorý je zameraný na sieť a je jednoúčelový. Detekcia narušenia, monitorovanie siete a telefonovanie pomocou protokolu IP sú príkladmi dobrých aplikácií pre Alpine Linux. A pre kontajnery je to prirodzená voľba. Aplikácie, ktoré disk vo veľkej miere využívajú, by mali byť starostlivo testované. Používatelia by sa mali pripraviť na to, že strávia nejaký čas zapojením sa do komunity a vyhrnú si rukávy, aby si zašpinili ruky. Vyžaduje sa pokus a chyba.

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