Programavimas

Apžvalga: „Alpine Linux“ sukurta „Docker“

„Alpine Linux“ yra minimalus „Linux“ paskirstymas, iš pradžių sukurtas naudojant „Gentoo“, tačiau dabar nepriklausomas ir savarankiškai prižiūrintis. Kai kuriais aspektais „Alpine Linux“ yra konceptualiai panašus į „NanoBSD“, nes techniniai vartotojai gali pradėti nuo „Alpine Linux“, kad sukurtų „Linux“ sistemą tik su tuo, ko reikia misijai atlikti, ir nieko daugiau.

Paprastai „Alpine Linux“ yra įterptas į įrenginius ar prietaisus, kai jis buvo pasirinktas pakeisti „Ubuntu“ kaip pagrindinį „Docker“ vaizdą. Saugumas, patikimumas ir tvirta kūrimo praktika buvo pagrindinės priežastys.

„Alpine Linux“ nepanašus į jokį „Linux“ platinimą, su kuriuo susidurs įprastas „Linux“ darbalaukio vartotojas. Pradėkime nuo aplanko / bin, kuriame laikomos sistemos komunalinės paslaugos:

Atkreipkite dėmesį, kad beveik visi dvejetainiai failai yra nuorodos į / bin / busybox. „Busybox“ yra bendrų naudotojų ir sistemos komunalinių paslaugų rinkinys, supakuotas į vieną dvejetainį failą, kad būtų galima greičiau paleisti, mažesni vietos poreikiai ir apskritai geresnis saugumas sumažinto funkcionalumo kaina. Daugelis retai naudojamų komunalinių paslaugų variantų buvo pašalinti, tačiau visos dažniausiai naudojamos parinktys lieka.

Be to, „Alpine“ naudoja „musl libc“, minimalų standartinės C / POSIX bibliotekos ir plėtinių, skirtų statiniam susiejimui ir realiuoju laiku įterptoms programoms, įgyvendinimą, išvengiant „glibc“ išsipūtimo. Statinis susiejimas reiškia greitesnį paleidimą, tačiau užima daugiau vietos, todėl geriausiai tinka mažesnėms sistemoms. Sujungus visus sistemos dvejetainius failus į vieną vykdomąjį failą ir susiejant su muslu, „Alpine“ gauna nedidelį ir greitą sistemos dvejetainių failų rinkinį, ko reikia įdėtojoje sistemoje.

Galiausiai dėmesys skiriamas saugumui. Sistema apima „Grsec“ / „PaX“ branduolio pataisas, kurios teikia „Linux“ branduolio saugos funkcijų rinkinį, įskaitant adresų erdvės apsaugą, patobulintą auditą ir vaidmenimis pagrįstą prieigą bei procesų valdymą. Naudodamiesi tipiškais „Linux“ paskirstymais, vartotojai turėtų sukompiliuoti ir paleisti savo branduolį, kad gautų šias pataisas, ko galbūt išvengtų net patys pažangiausi vartotojai.

„Alpine Linux“ diegimas ir konfigūravimas

Įdiegus „Alpine Linux“ yra daug neįprasto. Tai daugiausia priklauso nuo pirminio numatyto naudojimo įterptosiose sistemose, pvz., Maršrutizatoriuose. Toks „Alpine“ yra skirtas paleisti ir paleisti iš RAM, nors yra ir hibridinių variantų. Laikydamasis šios kilmės, „Alpine Linux“ kaip įkrovos įrankis naudoja „extlinux“, „Syslinux“ variantą. „Syslinux“ paprastai nenaudojamas paleisti pilnus „Linux“ diegimus, nes „Linux“ paprastai nėra įdiegta FAT failų sistemose. Vietoj to, „Syslinux“ dažnai naudojamas įkrovos ar gelbėjimo diskeliams, tiesioginiams USB ir kitoms lengvoms įkrovos sistemoms. „Alpine“ naudoja „Syslinux“ projekto dalis, kad būtų galima paleisti iš kompaktinių diskų, ir naudoja „extlinux“, kad būtų paleista iš „Linux“ failų sistemų arba USB įrenginių FAT failų sistemų. „FAT“ failų sistemose yra tam tikrų apribojimų, tokių kaip failų dydis ir failų pavadinimų ilgis.

„Alpine“ palaiko tris diegimo režimus: be diskų, „duomenys“ ir „sys“. Diegiant duomenis, operacinė sistema į RAM įkeliama iš tik skaitomos laikmenos, tačiau, norint išsaugoti duomenis, ji pritvirtina skaitymo / rašymo skaidinius. Tai gali būti naudojama, pavyzdžiui, jei „Alpine“ pagrindu sukurtas maršrutizatorius diske saugojo įsilaužimo ar prieigos žurnalus. Žurnalų kopijavimas į RAM būtų vertingo ištekliaus švaistymas. „Diskless“ režimas yra panašus, tačiau skaitymo / rašymo skaidinys paprastai yra mažesnis ir naudojamas OS konfigūracijos informacijai saugoti. „Sys“ yra tradicinis disko diegimo režimas.

Diegiant be diskų arba duomenų režimu, „Alpine Local Backup“ sistema naudojama konfigūracijos failams laikyti. Tai daroma su „lbu“ (vietinė atsarginių kopijų kūrimo programa), kuri stebi failus, pasikeitusius kataloge / etc, ir išsaugo tuos pakeitimus .apkovl „perdangos“ failuose (tar-gzip archyvuose). Naudodami „lbu“, administratoriai gali, pavyzdžiui, palyginti, sujungti arba grįžti į ankstesnes konfigūracijas.

Pirmiausia bandžiau įdiegti be disko, nes norėjau paleisti „Alpine“ taip, kaip iš pradžių buvo numatyta, kaip prietaisų OS. Deja, VMware diegime aptikau ilgametę (2015 m.) Klaidą, kuri nebuvo pataisyta ir neatnaujinta dokumentacija. Panašu, kad virtualaus diskelio vaizdas nėra montuojamas įkrovos metu. Tai reiškia, kad konfigūracijos pakeitimai prarandami kiekvieną kartą perkraunant.

Galiausiai griebiausi sistemos diegimo, kuris pavyko puikiai. Pirmiausia reikia pastebėti tai nieko, net ne SSH, yra įdiegta pagal numatytuosius nustatymus. Jei kuriate įterptąsias sistemas, tai tikriausiai yra geras dalykas. „Linux“ naujokai turėtų ruoštis stačiai mokymosi kreivei. Šiek tiek perskaitęs apie „Alpine Package Manager“ (APK), aš pradėjau įdiegti minimalų įrankių rinkinį: „Sudo“, SSH ir žiniatinklio grafinės sistemos valdymo įrankį ACF.

„Alpine Linux“ sistemos administravimas

Nors daugumoje „Linux“ sistemų yra grafinis sistemos administravimo įrankis, „Alpine“ sąrankai naudoja „shell“ scenarijus. Aš sukonfigūravau visus pagrindinius scenarijus „setup-alpine“, kad sukonfigūruočiau visus pagrindinius dalykus, pvz., Tinklą, pagrindinio kompiuterio pavadinimą, diskus, laiko juostą ir pan. Nors „setup-alpine“ pakanka norint gauti veikiančią sistemą, bet kuriai pažangesnei reikės redaguoti sistemos konfigūracijos failus tiesiogiai ir naudojant lbu išsaugoti juos rašytinėse laikmenose. Atkreipkite dėmesį, kad „setup-alpine“ taip pat yra diegimo programa, todėl gali būti pateiktas disko pavadinimas ir jis įrašys OS į laikmeną, ragindamas rašomą skaidinį katalogams / etc ir / var.

„Alpine“ taip pat skiriasi programinės įrangos kūrimas ir platinimas. Iš dalies taip yra dėl to, kad jis numatytas naudoti įterptosiose sistemose arba kaip pagrindinis konteinerių atvaizdas, bet taip pat dėl ​​to, kad autoriai manė, kad esamos paketų valdymo sistemos neveiks gerai sistemoje, paprastai valdomoje iš RAM. „Alpine Package Manager“ (APK) atitinka visus šiuos reikalavimus, turi mažą pridėtinę kainą ir greitą diegimo laiką. Tačiau norėčiau, kad jie būtų suskirstyti į standartiškesnę API. Jau turime pakankamai paketų valdymo API ir yra ką pasakyti apie suderinamumą. APK naudojamas konteinerių ar atskirų sistemų konfigūravimui.

Paketai pristatomi per uostų medį, kuris man primena FreeBSD uostų kolekciją. Tačiau užuot valdžiusi sudėtingą „makefile“ sistemą, ji naudoja kitą „Alpine Linux“ išradimą „abuild“. Aportų saugykla atspindi viso pasaulio uostmedį ir apk pridėti ... yra tikrai daug spartesnis nei kitos paketų valdymo sistemos.

Kitas dalykas, kurį reikia pastebėti apie „Alpine“, yra „OpenRC“ naudojimas „init“ sistemai. Viena iš daugybės „Linux“ pradinių sistemų dabar yra „OpenRC“, pradėta „Gentoo“ (kaip ir „Alpine“). Funkciniu požiūriu nieko netrūksta, tačiau būkite pasirengę išmokti naują paleidimo lygių ir „init“ komandų sistemą.

Laimei, didžiąją kasdienio administravimo dalį galima atlikti naudojant internetinę Alpių konfigūravimo sistemą (ACF), nors darbas su ACF nebuvo visiškai sklandus. Tai neaptiko įprasto vartotojo, kurį pridėjau sau per adduser, pavyzdžiui. ACF GUI atrodo panašiai kaip jūsų tipinio „Linux“ pagrindinio maršrutizatoriaus žiniatinklio sąsaja:

ACF taip pat reikalauja šiek tiek kasimo, kad surastų ir įdiegtų. Atsitiktinis vartotojas sistemos nebūtų atradęs, nebent dėmesingas, ir net tada nėra diegimo instrukcijų.

„Alpine Linux“ saugojimas ir tinklų kūrimas

„Alpine“ palaiko keletą atminties parinkčių, išskyrus tik RAM, konfigūracija saugoma laikmenoje ir „Flash“ kortelėse. Tačiau dokumentacija, tiksliau jos trūkumas, apsunkino saugojimą. Pvz., Norėjau įrašyti pasirinktinį ISO naudodama programą, kurios nėra galimybės įsigyti, greičiausiai tai yra pakankamai dažnas atvejis. Tai atlikę dokumentai buvo aklavietė:

Ketverių su puse metų laukti reikia ilgai. Teisybės dėlei reikia pasakyti, kad saugojimas niekada nebuvo didelė Alpių lygties dalis, daugiausia dėmesio skiriant įterptosioms programoms, todėl nenuostabu, kad tai turėtų būti silpna sritis. Vyksta darbas daugumoje sričių, kurių tikimasi iš „Linux“ platintojo, pvz., LVM, iSCSI ir RAID, tačiau ruošiatės praleisti nemažai laiko bandydami suprasti dokumentus, ar skaityti šaltinio kodą, kad viską išsiaiškintumėte.  

Tinklo su „Alpine“ kūrimas yra visai kita istorija nei saugojimas. Tinklo kūrimo dokumentai yra geriau parašyti ir išsamesni, juose dažnai pateikiama geriausių efektyvių tinklų sukūrimo praktika. Palaikomi IP4, IP6, sujungimas, VLAN, sujungimas ir beveik bet kokia pageidaujama tinklo sąranka. Net rasite instrukcijas, kaip nustatyti palydovinį interneto ryšį!

Konfigūruoti galima naudojant tradicinius įrankius, pvz., „Ifconfig“ ir „route“, arba kai kuriuos naujesnius paketus, pvz., „Iproute2“. Verta paminėti įdomų paprojeką, vadinamą „Linux“ užkardos konfigūravimo įrankiu „Alpine Wall“. Palaikomas net serijinių linijų PPP, o tai šiek tiek stebina šiais laikais.

Aš daug išmokau skaitydamas šią dokumentaciją, aptikęs keletą konfigūracijos patarimų, kurių anksčiau nežinojau, taip pat keletą anksčiau nežinomų tinklo paslaugų. Ši dokumentacijos dalis verta žymėti kaip greitą nuorodą į tinklo instrukcijas, net jei nenaudojate „Alpine Linux“.

„Alpine Linux“ atnaujinimai ir naujovinimai

„Alpine Linux“ leidimų inžinerija nėra nė kiek tokia griežta ar formali kaip subrendusios sistemos, tokios kaip „FreeBSD“, tačiau ji aprėpia pagrindus. Ir jis puikiai tinka „Alpine“ pagrindiniams „Docker“ prieglobos ir prietaisų naudojimo atvejams.

Iš esmės yra du srautai, kraštiniai ir stabilūs. „Edge“ yra slenkanti paleidimo šaka, kuri kas šešis mėnesius vyksta bet kurioje vietoje. Paketai pereina per kraštus ir, kai jie yra paruošti, yra paaukštinami į arklidę / bendruomenę, kur juos šešis mėnesius palaiko bendruomenė. Paketai, kurie išgyvena ir toliau tobulėja, galiausiai tampa stabilūs / pagrindiniai, kur jie palaikomi dvejus metus.

Šiek tiek atsargumo reikia atnaujinant iš 2.x į 3.x šaką, nes pasikeitė C bibliotekos (iš uClibc į musl). Jei nesate atsargūs, įpusėjus atnaujinimui sistema gali sugesti. Paketų atnaujinimas pagal 3.x liniją yra paprastesnis, tačiau vis tiek rankinis procesas, kurį dažniausiai valdo scenarijai. Apgaulė suprasti naujovinimo procesą yra gauti tinkamą APK saugyklą (bendruomenę, kraštą ar pagrindinę), išvalyti talpyklą ir leisti APK atnaujinti visus paketus su apk atnaujinimas.

Atnaujinti branduolį taip pat nesudėtinga ir jis naudoja sąrankos paleidimo scenarijų, kad įrašytų naują branduolį ir magistralę į įkrovos terpę.

Apskritai „Alpine“ sistemoje nėra per daug judančių dalių, todėl, supratus architektūrą, išsiaiškinti, ar nėra naujovinimo.

„Alpine Linux“ iš pirmo žvilgsnio

„Alpine Linux“ yra puikus pasirinkimas bet kuriai sistemai, kuri yra orientuota į tinklą ir skirta vienai paskirčiai. Įsibrovimo aptikimas, tinklo stebėjimas ir IP telefonija yra gerų „Alpine Linux“ programų pavyzdžiai. Tai natūralus konteinerių pasirinkimas. Reikėtų atidžiai išbandyti programas, kurios naudoja daug diskų. Vartotojai turėtų pasiruošti praleisti šiek tiek laiko įsitraukdami į bendruomenę ir pasiraitodami rankoves, kad suteptų rankas. Reikės bandymų ir klaidų.

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