Redaguojate WireGuard konfigūraciją veikiančiame konteineryje, ji veikia, ir kitas image atnaujinimas ją ištrina. Niekas nebuvo neteisingai sukonfigūruota. Failas gyveno konteinerio įrašomame sluoksnyje, kuris egzistuoja tik tam konteinerio egzemplioriui. Svarbus palyginimas yra ne kurią priemonę naudoti, o kokias įvestis deklaruoja jūsų diegimas. Viskas, ką redagavote rankiniu būdu, yra įvestis, apie kurią diegimas nežino.

Dviejų rūšių būsena, viena vienkartinė

Konteineris turi įrašomą sluoksnį vykdymo metu padarytiems pakeitimams, ir tas sluoksnis išmetamas, kai konteineris pakeičiamas. Tai nėra konfigūracijos saugykla ir ne atsarginė kopija. Image kartu su deklaruotomis įvestimis yra visas apibrėžimas to, kas veikia.

Paklauskite, kurie jūsų VPN failai yra deklaruotos įvestys, o kurie atsitiktinumas:

docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpn

Diff išvardija, kas pasikeitė įrašomame sluoksnyje, ir tai yra būtent tas dalykų rinkinys, kuris išnyks. Mount sąrašas rodo, kas išlieka. Abiejų palyginimas atsako į klausimą prieš ką nors prarandant.

Bind mount, pavadintas volume arba secret: ką kiekvienas apsaugo

Visi trys gali laikyti VPN profilį, ir jie skiriasi tuo, kas gali jį skaityti ir kas atsitinka keičiant.

MechanismSurvives recreationWho can read it
Writable layerNoAnyone with container access, until it is gone
Bind mountYes, while the host path existsWhatever the host permissions allow
Named volumeYes, until the volume is removedManaged by the runtime
SecretYes, as a declared inputThe container process, by design

Bind mount susieja host kelio vietą, todėl failas yra apsaugotas tiek, kiek tas kelias, ir matomas tiek, kiek leidžia host teisės. Pavadintas volume valdomas runtime ir išlieka pašalinus konteinerį, todėl tai yra saugesnis numatytasis variantas būsenai, kurią valdo diegimas. Secret mechanizmas skirtas medžiagai, kurios nenorite image arba aplinkos kintamajame.

Nelaikykite kiekvieno aplinkos kintamojo ir kiekvieno host failo lygiaverte apsauga, nes jie tokie nėra.

Redagavimas konteinerio viduje yra spąstai

Spąstai yra ne priemonė, o redagavimo kryptis. Pakeitimas, padarytas veikiančiame konteineryje, diegimui nematomas, todėl kitas atkūrimas tyliai jį grąžina, ir simptomas atrodo kaip regresija image faile. Jei turite ten ką nors pakeisti diagnostikai, nedelsdami nusikopijuokite į išorę ir įdėkite į deklaruotą įvestį. Tada sukurkite iš naujo, kad įrodytumėte, jog diegimas tai atkuria.

Profilyje gali būti privatūs raktai ir paskyros medžiaga, todėl to failo atsarginė kopija yra slaptųjų duomenų tvarkymo užduotis, o ne failo kopijavimas. Laikykite nuosavybę ir skaitymo prieigą apribotas tikruoju konteinerio procesu, o ne išplėskite host katalogą, kad išnyktų teisių klaida.

Būtent tas išplėtimas paverčia patogumą konteineryje host atskleidimu.

Sąmoningai atkurkite, tada patikrinkite keturis dalykus

Užrašykite image versiją, reikalingą įrenginį ir galimybes, tinklo prisijungimą ir nuolatines įvestis. Įrenginio ir galimybių sąrašas yra ypač svarbus VPN konteineriui, nes tuneliui reikia tinklo įrenginio ir teisės jį sukonfigūruoti.

Patvirtinkite, kuri sugeneruota vykdymo būsena turi būti atkurta, o ne išsaugota. Raktai, kuriuos tunelis sugeneravo pirmo paleidimo metu, yra būsena, ir sprendimas juos palikti ar sugeneruoti iš naujo turi pasekmių kiekvienam peer, kuris žino seną viešąjį raktą.

Po kontroliuojamo atkūrimo patikrinkite tapatybę, maršrutizavimą, DNS ir reikiamą gedimo blokavimą. Procesas, kuris startuoja be klaidų, neįrodo nė vieno iš tų keturių. Patikrinkite tai, kol tunelis veikia, ir dar kartą jį sustabdę, nes gedimo blokavimas rodo save tik tada, kai tunelis dingsta.

Laikykite atkūrimo kopiją už konteinerio ribų

Laikykite atkūrimo kopiją, kuri gyvena nepriklausomai nuo konteinerio, ir išbandykite jos atkūrimą pagal dokumentuotą procesą. Neišbandyta VPN profilio atsarginė kopija yra viltis, ypač kai atkūrimo kelias apima teises, kurių reikia konteinerio procesui.

Jei konteineris, kuriam priklauso VPN, pakeičiamas, suderinkite programas, kurios dalijasi jo tinklo steku, runtime palaikomame gyvavimo cikle.

Tas suderinimas yra skirtumas tarp paleidimo iš naujo ir sutrikimo. Diegimas turėtų aprašyti, iš kur ateina konfigūracija, o volume dokumentacija yra vieta patikrinti, ką runtime iš tikrųjų išsaugo.

Susiję straipsniai