Technologijos

← Pradžia
Konteinerizavimas

Docker — izoliuoti konteineriai stabilioms svetainėms

Visa 4buildsite platforma – redaktorius, API, atvaizdavimo variklis ir paslauga, pateikianti paskelbtas svetaines – veikia Docker konteineriuose: izoliuotuose paketuose, kuriuose yra viskas, ko reikia kiekvienai paslaugai. Tavo svetainė atvaizduojama statiškai ir pateikiama kaip pilna versija, atomiškai perjungiama kiekvieno paskelbimo metu. Paprastai tariant: paskelbimas vyksta atskirai nuo dabartinės versijos, o jei kas nors nepavyksta, grįžti į ankstesnę versiją.

Kas yra konteineris – ir kodėl tai svarbu tavo svetainei

Konteineris – standartizuotas paketas, kuriame yra programa ir absoliučiai viskas, ko jai reikia veikti: vykdymo aplinka, bibliotekos, konfigūracija. Konteineris veikia izoliuotai nuo likusio serverio, bet tiesiogiai naudoja pagrindinio kompiuterio Linux branduolį – be atskiros operacinės sistemos kiekvienai programai. 2013 m. pristatytas Docker šią technologiją pavertė prieinamu standartu; atvaizdo formatas šiandien standartizuotas kaip OCI (Open Container Initiative) ir veikia vienodai bet kuriame Linux serveryje ar debesyje.

Klasikinė analogija – jūrinis konteineris: nesvarbu, kokį krovinį jis talpina, jis turi tą pačią standartinę formą ir gali būti perkeltas bet kuriuo laivu, traukiniu ar sunkvežimiu. Taip pat 4buildsite paslaugos, kurios kuria ir pateikia tavo svetainę – redaktorius, FastAPI API, atvaizdavimo variklis – supakuotos į standartinius atvaizdus, kurie vienodai veikia testiniame ir produkciniame serveryje. Tau, kaip svetainės ar parduotuvės savininkui, tai reiškia nuspėjamumą: tai, ką matei peržiūroje, yra būtent tai, ką gauna lankytojai.

  • Konteineris = programa + jos priklausomybės viename izoliuotame pakete
  • Standartinis OCI formatas – tas pats atvaizdas veikia bet kuriame serveryje ar debesyje
  • Be atskiros operacinės sistemos kiekvienai paslaugai – paleidimas per sekundes, o ne minutes
  • 4buildsite platformoje konteinerizavimą tvarko platforma – tu tik skelbi

Izoliacija: tavo svetainė nepriklauso nuo kaimynų

Klasikiniame bendrame talpinime šimtai svetainių dalijasi tuo pačiu serveriu, tais pačiais procesais ir dažnai ta pačia PHP instaliacija. Jei kaimynas sulaukia srauto bangos ar blogai parašytas skriptas suryja visą procesorių, tavo svetainė sulėtėja – reiškinys, vadinamas „noisy neighbour“. 4buildsite šią problemą sprendžia iš dviejų pusių. Pirma: paskelbtos svetainės atvaizduojamos statiškai – jas pateikiančiuose serveriuose nevykdomas joks kiekvienai svetainei skirtas kodas (PHP, įskiepiai, skriptai), todėl nėra kaimyno blogai parašyto skripto, kuris gali suryti procesorių. Antra: platformos paslaugos veikia kiekviena savo konteineryje, su atskirais procesais ir failais (per namespaces) ir galimybe nustatyti CPU bei atminties limitus (per cgroups – Linux branduolio mechanizmus).

Izoliacija lygiai taip pat svarbi saugumui. Bendrame talpinime pažeista svetainė gali tapti vartais į kaimynines to paties serverio svetaines. 4buildsite paskelbta svetainė yra statinių failų rinkinys – nevykdomas kodas, kurį būtų galima pažeisti per įskiepius ar temas – o duomenis apdorojančios platformos paslaugos (užsakymai, mokėjimai, redaktorius) laikomos atskiruose konteineriuose: failų sistema izoliuota, o galimas incidentas lieka uždarytas to konteinerio viduje.

  • Paskelbta svetainė = statiniai failai – nėra kiekvienai svetainei skirto kodo, kurį būtų galima pažeisti
  • Platformos paslaugos: atskira failų sistema ir procesai kiekviename konteineryje
  • Statinis pateikimas: serveriuose nevykdomas kiekvienai svetainei skirtas kodas

Ta pati versija visur: jokio „pas mane veikia, gyvai neveikia“

Dažniausias klasikinio žiniatinklio defektų šaltinis – skirtumas tarp aplinkos, kurioje svetainė testuota, ir serverio, kuriame ji veikia gyvai: kita kalbos versija, trūkstamas plėtinys, kita konfigūracija. Docker atvaizdas pašalina visą šią problemų kategoriją: atvaizdas sukuriamas vieną kartą, su visomis užfiksuotomis priklausomybėmis, ir būtent tas pats artefaktas veikia testuojant ir produkcijoje. Nėra „rankiniu būdu sukonfigūruota serveryje“.

Tau tai tiesiogiai virsta stabilumu. Kai keiti svetainę vizualiniame redaktoriuje panel.4buildsite.net ir spaudi paskelbti, lankytojus pasiekianti versija kaskart praėjo tuos pačius žingsnius, per tas pačias konteinerizuotas paslaugas. Mažiau staigmenų po paskelbimo – o internetinei parduotuvei kiekviena prastovos valanda reiškia prarastus užsakymus.

Paskelbimai atomiškai ir atšaukimas perjungimu atgal

4buildsite platformoje paskelbimas nereiškia „sustabdome svetainę, nukopijuojame failus, tikimės“. Kiekvienas paskelbimas sugeneruoja naują, pilną tavo svetainės versiją – atvaizduotą statiškai, atskirai nuo veikiančios – o perjungimas į ją yra atominis: vienos operacijos metu pateikimo paslauga pradeda aptarnauti naują versiją. Perjungimas vykdomas viena operacija, todėl net pirkinių krepšelio užsakymo viduryje lankytojas nemato tarpinės būsenos. Tas pats principas taikomas platformos paslaugoms: nauja konteinerio versija paleidžiama šalia senosios ir perima srautą tik po sveikatos patikrų.

Ne mažiau svarbus kelias atgal. Kiekviena paskelbta svetainės versija išsaugoma nepaliesta, todėl grįžimas į ankstesnę versiją reiškia tiesiog perjungimą atgal – perjungimo operaciją, o ne valandų trukmės atkūrimą iš atsarginės kopijos. Jei paskelbimas sukelia problemą, gali grįžti prie ankstesnės versijos. Vienintelis sąžiningas niuansas: duomenys (užsakymai, produktai, turinys) gyvena duomenų bazėje, atskirai nuo paskelbtų versijų – todėl jie valdomi pastoviuose tomuose, atskirai nuo svetainės failų.

  • Kiekvienas paskelbimas = nauja, pilna versija, perjungiama atomiškai
  • Atšaukimas (rollback) = perjungimas atgal į ankstesnę versiją
  • Pakeitimus skelbi bet kada, įskaitant pardavimų sezono įkarštyje

Efektyvumas ir kaštai: daugiau našumo už tuos pačius pinigus

Klasikinė virtualioji mašina kiekvienai programai vykdo pilną operacinę sistemą – gigabaitai atminties ir paleidimo minutės, sunaudotos vien „pakuotei“. Konteineriai dalijasi pagrindinio kompiuterio branduoliu, todėl tame pačiame serveryje telpa daug daugiau svetainių, kiekviena su sava izoliacija. Šis tankis yra priežastis, kodėl 4buildsite gali įtraukti talpinimą ir SSL į prenumeratą, be atskirų infrastruktūros kaštų kiekvienai svetainei.

Tavo paskelbtai svetainei mastelio didinimas dar paprastesnis: kadangi tai statiniai failai, jų pateikimas itin pigus – lankytojų pikas reiškia daugiau pateiktų failų, o ne papildomus procesus, trukdančius vienas kitam. O platformos paslaugos, būdamos konteineriai, paleidžiami per sekundes, gali gauti papildomų instancijų, kai reikia. Moki nuspėjamą prenumeratą, o ne infrastruktūrą, nuolat dimensionuotą pačiai įtemptiausiai metų dienai. Apie tai, kaip faktiškai valdome šiuos konteinerius – orkestravimą, tarpinį serverį, CI/CD, stebėseną – skaityk puslapyje „Debesis ir DevOps“.

Privalumai ir apribojimai

Privalumai

  • Paskelbta svetainė pateikiama statiškai, o platforma veikia izoliuotuose konteineriuose.
  • Tie patys platformos atvaizdai testuojant ir produkcijoje – jokio „pas mane veikia, gyvai neveikia“.
  • Paskelbimai atomiškai: nauja svetainės versija generuojama atskirai ir perjungiama viena operacija.
  • Atšaukimas į anksčiau paskelbtą versiją, jei pakeitimas nepavyksta.
  • Konteineriai paleidžiami per sekundes – platformos paslaugoms papildomos instancijos pridedamos, kai reikia.
  • Didelis tankis viename serveryje – talpinimas įtrauktas į prenumeratą, be atskiros kainos.

Apribojimai

  • Izoliacija naudoja bendrą pagrindinio kompiuterio branduolį – silpnesnė nei specialios virtualiosios mašinos aparatinė izoliacija.
  • Konteineris yra laikinas: pastovūs duomenys (duomenų bazė, įkelti failai) reikalauja atskirai valdomų tomų ir atsarginių kopijų.
  • Atvaizdai ir jų sluoksniai užima vietą diske – be periodinio valymo jie kaupiasi.
  • Komandoms, kurios jį administruoja pačios, Docker turi realią mokymosi kreivę – 4buildsite platformoje jį visiškai tvarko platforma.

Trumpa išvada

Docker konteinerizavimas – de facto pramonės standartas žiniatinklio programoms vykdyti: izoliacija, testavimo ir produkcijos nuoseklumas bei atšaukimas. 4buildsite platformoje platforma, kuri kuria ir pateikia tavo svetainę, veikia konteinerizuota, o tavo svetainės paskelbimai versijuojami, perjungiami atomiškai ir atšaukiami – kaip valdoma infrastruktūra (orkestravimas, tarpinis serveris, CI/CD) aprašyta puslapyje „Debesis ir DevOps“.

Specifikacijų lentelė

GalimybėRiba / slenkstisTipinis naudojimas
Išteklių izoliacijaCPU/RAM limitai kiekvienam konteineriui (cgroups, namespaces)Bendras branduolys – tai ne aparatinė izoliacija kaip VMSvetainės ir parduotuvės bendroje infrastruktūroje
Paleidimas / diegimasKonteineris paleidžiamas per sekundesPirmasis atvaizdo atsisiuntimas trunka ilgiauDažni paskelbimai ir atnaujinimai kaip atomiški perjungimai
Atšaukimas (rollback)Grįžti į bet kurį ankstesnį atvaizdą per sekundesDuomenų bazės duomenys neatšaukiami kartu su atvaizduGrįžimas į ankstesnę versiją, kai atnaujinimas nepavyksta
PerkeliamumasOCI atvaizdas – veikia bet kuriame Linux hoste ar debesyjeAtvaizdai priklauso nuo architektūros (x86/ARM)Perkėlimas tarp serverių be programos perrašymo
Tankis / kainaDešimtys izoliuotų konteinerių viename serveryjeVisi dalijasi pagrindinio kompiuterio branduoliu ir diskuMaža kaina vienai svetainei – talpinimas įtrauktas į prenumeratą

Docker ir virtualiosios mašinos ir bendras talpinimas (cPanel)

KriterijusDocker (konteineriai)Virtualiosios mašinosBendras talpinimas (cPanel)
IzoliacijaKiekvienam konteineriui (procesai, failai, ištekliai)Pilna (virtualizuota aparatinė įranga)Silpna – šimtai svetainių tame pačiame serveryje
Paleidimo / diegimo greitisSekundėsMinutės (pilnas OS paleidimas)Pakeitimai tiesiai gyvame serveryje (FTP)
Išteklių sąnaudosMinimalios – be atskiros OS kiekvienai programaiDidelės – pilna OS kiekvienai mašinaiMažos, bet nekontroliuojamai dalijamos tarp kaimynų
Atšaukimas (rollback)Paleidi ankstesnį atvaizdąIš momentinės kopijos – lėčiauRankiniu būdu, iš atsarginės kopijos
SaugumasIncidentas apribotas konteineriuStipriausia izoliacijaPažeista svetainė gali paveikti kaimynus
Kaina vienai svetaineiMaža – didelis tankis serveryjeAukšta – mokėti reikia už visą mašinąLabai maža, bet nenuspėjamas našumas

Dažniausiai užduodami klausimai

Ar Docker veikia mano svetainės greitį?

Konteineriai veikia natūraliai Linux branduolyje, be aparatinės virtualizacijos sluoksnio, todėl pridėtinės sąnaudos nereikšmingos. Svetainės greitį lemia kodas, talpykla ir tinklas.

Kodėl ne klasikinis talpinimas su cPanel, kaip WordPress?

Klasikiniame bendrame talpinime šimtai svetainių dalijasi tuo pačiu serveriu be griežtų limitų: perkrautas kaimynas tave sulėtina, o pažeistas gali paveikti. 4buildsite platformoje paskelbta svetainė pateikiama statiškai – nevykdomas kiekvienai svetainei skirtas kodas, kurį būtų galima pažeisti – o platformos paslaugos veikia izoliuotuose konteineriuose, su atomiškai perjungiamais paskelbimais. Tai, ko cPanel nesiūlo.

Kas nutinka, jei paskelbimas sugadina mano svetainę?

Anksčiau paskelbta versija vis dar egzistuoja, nepaliesta, todėl grįžimas – tik perjungimas: pateikimo paslauga perjungia atgal į ją. Atgal galima grįžti prie ankstesnės versijos, o duomenų bazės duomenys lieka nepaliesti.

Ar turiu žinoti Docker, kad naudočiau 4buildsite?

Ne. Konteinerizavimą visiškai tvarko platforma: tu kuri svetainę vizualiniame redaktoriuje panel.4buildsite.net ir skelbi. Docker dirba „po gaubtu“ – naudą (izoliaciją, atšaukimą, atomiškus paskelbimus) gauni be jokios konfigūracijos.

Ar Docker saugus internetinei parduotuvei?

Taip. Procesų ir failų izoliacija galimo incidento spindulį apriboja to konteinerio ribomis, o ne visu serveriu. Kortelių duomenys per konteinerį vis tiek nepraeina – mokėjimus apdoroja Stripe, Stripe sertifikuotoje infrastruktūroje.

Ar Docker tas pats, kas virtualioji mašina?

Ne. Virtualioji mašina virtualizuoja pilną aparatinę įrangą ir vykdo savo operacinę sistemą – paleidžiama minutes ir sunaudoja daug. Konteineris dalijasi pagrindinio kompiuterio branduoliu: paleidžiamas per sekundes, sunaudoja dalį išteklių ir išlaiko programos izoliaciją.

4b2b.net
Verslo ekosistema
4conta.ro
Buhalterinė apskaita
4invoices.net
Sąskaitų išrašymo programa
4expenses.net
Išlaidų valdymas
4notify.net
Pranešimai
4hosting.net
Svetainių talpinimas
4database.net
Duomenų bazės
4buildsite.net
Svetainių kūrimas
4myapp.net
Programėlių kūrimas
4avatars.net
DI avatarai
4chaty.net
DI pokalbių robotas
4webagency.net
Programa interneto agentūroms
4softedu.net
Svetainės švietimui
4softcrm.net
CRM platforma
4softerp.net
ERP sistema
4softhr.net
Personalo valdymas
4mystaff.net
Darbuotojų portalas
4myprojects.net
Projektų valdymas
4mycontracts.net
Sutartys
4docs.net
Dokumentų valdymas
4appointments.net
Vizitų registracija
4marketingonline.net
Rinkodara
4insurance.net
Draudimas
4property.net
Nekilnojamasis turtas
4lawyers.net
Programa advokatams
4mygarage.net
Autoservisas
4driving.net
Vairavimo mokyklos
4fleet.net
Autoparko valdymas
4myevents.net
Renginiai
4therapy.net
Terapija
4clinics.net
Klinikos
4dental.net
Odontologijos klinikos
4restaurants.net
Restoranai
4beautify.net
Grožio salonas
4gym.net
Sporto klubai
4guards.net
Apsaugos įmonės
4softvet.net
Veterinarijos klinikos
4softauto.net
Programinė įranga automobilių verslui
4construct.net
Statybos įmonės
4marketplace.net
Prekyvietė
4shopy.net
El. parduotuvė
4pricing.net
Kainų palyginimas
4salefood.net
Maisto pristatymas
4rentify.net
Nuoma
4transports.net
Transportas
4agencytravel.net
Kelionių agentūra
4hotel.net
Viešbučių valdymas
4ong.net
NVO valdymas