VPN konfigurācija pārdzīvo konteinera atjaunošanu tikai tad, ja to pievienojat
Fails, kas rediģēts darbojošā konteinerā, dzīvo slānī, kas pazūd. Salīdziniet bind mount, volumes un secrets, pēc tam izveidojiet no jauna un pārbaudiet četras lietas.
Jūs rediģējat WireGuard konfigurāciju darbojošā konteinerā, tā strādā, un nākamais image atjauninājums to izdzēš. Nekas nebija nepareizi konfigurēts. Fails dzīvoja konteinera rakstāmajā slānī, kas pastāv tikai šim konteinera gadījumam. Svarīgais salīdzinājums nav, kuru rīku izmantot, bet gan to, kādas ievades jūsu izvietojums deklarē. Viss, ko rediģējāt ar roku, ir ievade, par kuru izvietojums nezina.
Divu veidu stāvoklis, viens ir vienreizējs
Konteineram ir rakstāms slānis izpildlaikā veiktām izmaiņām, un šis slānis tiek izmests, kad konteiners tiek aizstāts. Tā nav konfigurācijas krātuve un nav dublējums. Image kopā ar deklarētajām ievadēm ir visa definīcija tam, kas darbojas.
Pajautājiet, kuri no jūsu VPN failiem ir deklarētas ievades un kuri ir nejaušība:
docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpnDiff uzskaita, kas mainījās rakstāmajā slānī, un tas ir tieši tas lietu kopums, kas pazudīs. Mount saraksts parāda, kas paliek. Abu salīdzināšana atbild uz jautājumu, pirms kaut ko zaudējat.
Bind mount, nosaukts volume vai secret: ko katrs aizsargā
Visi trīs var glabāt VPN profilu, un tie atšķiras ar to, kas to var lasīt un kas notiek aizstāšanas laikā.
| Mechanism | Survives recreation | Who can read it |
|---|---|---|
| Writable layer | No | Anyone with container access, until it is gone |
| Bind mount | Yes, while the host path exists | Whatever the host permissions allow |
| Named volume | Yes, until the volume is removed | Managed by the runtime |
| Secret | Yes, as a declared input | The container process, by design |
Bind mount kartē host ceļu, tāpēc fails ir aizsargāts tik, cik aizsargāts ir šis ceļš, un redzams tik, cik pieļauj host atļaujas. Nosaukts volume tiek pārvaldīts ar runtime un pārdzīvo konteinera noņemšanu, kas to padara par drošāku noklusējumu stāvoklim, kas pieder izvietojumam. Secret mehānisms ir paredzēts materiālam, ko nevēlaties image vai vides mainīgajā.
Neuzskatiet katru vides mainīgo un katru host failu par līdzvērtīgu aizsardzību, jo tie nav.
Rediģēšana konteinera iekšienē ir slazds
Slazds nav rīks, bet gan rediģēšanas virziens. Izmaiņas, kas veiktas darbojošā konteinerā, izvietojumam nav redzamas, tāpēc nākamā atjaunošana tās klusām atgriež, un simptoms izskatās kā regresija image. Ja jums tur kaut kas jāmaina diagnostikai, nekavējoties nokopējiet to ārā un ievietojiet deklarētajā ievadē. Pēc tam izveidojiet no jauna, lai pierādītu, ka izvietojums to atkārto.
Profils var saturēt privātās atslēgas un konta materiālu, kas padara šī faila dublējumu par slepenu datu apstrādes uzdevumu, nevis faila kopēšanu. Turiet īpašumtiesības un lasīšanas piekļuvi ierobežotas ar konteinera faktisko procesu, nevis paplašiniet host direktoriju, lai pazustu atļauju kļūda.
Tieši šī paplašināšana pārvērš ērtību konteinerā par host atklāšanu.
Apzināti izveidojiet no jauna, pēc tam pārbaudiet četras lietas
Pierakstiet image versiju, nepieciešamo ierīci un iespējas, tīkla savienojumu un pastāvīgās ievades. Ierīces un iespēju saraksts ir īpaši svarīgs VPN konteineram, jo tunelim vajag tīkla ierīci un tiesības to konfigurēt.
Apstipriniet, kurš ģenerētais izpildlaika stāvoklis ir jāpārbūvē, nevis jāsaglabā. Atslēgas, ko tunelis ģenerēja pirmajā startā, ir stāvoklis, un lēmumam tās paturēt vai ģenerēt no jauna ir sekas katram peer, kas zina veco publisko atslēgu.
Pēc kontrolētas atjaunošanas pārbaudiet identitāti, maršrutēšanu, DNS un nepieciešamo kļūmes bloķēšanu. Process, kas startē bez kļūdām, nepierāda nevienu no šiem četriem. Pārbaudiet to, kamēr tunelis darbojas, un vēlreiz pēc tā apturēšanas, jo kļūmes bloķēšana parāda sevi tikai tad, kad tunelis pazūd.
Turiet atkopšanas kopiju ārpus konteinera
Turiet atkopšanas kopiju, kas dzīvo neatkarīgi no konteinera, un pārbaudiet tās atkopšanu dokumentētajā procesā. Nepārbaudīts VPN profila dublējums ir cerība, jo īpaši tad, ja atkopšanas ceļš ietver atļaujas, kas vajadzīgas konteinera procesam.
Ja konteiners, kuram pieder VPN, tiek aizstāts, saskaņojiet lietojumprogrammas, kas dala tā tīkla steku, runtime atbalstītajā dzīves ciklā.
Šī saskaņošana ir atšķirība starp restartu un pārtraukumu. Izvietojumam būtu jāapraksta, no kurienes nāk konfigurācija, un volume dokumentācija ir vieta, kur pārbaudīt, ko runtime patiešām saglabā.