En VPN-konfigurasjon overlever bare gjenskapingen av containeren hvis du monterer den
En fil som redigeres i en kjørende container, bor i et lag som forsvinner. Sammenlign bind mounts, volumer og secrets, og gjenskap deretter og verifiser fire ting.
Du redigerer WireGuard-konfigurasjonen inne i en kjørende container, det virker, og den neste image-oppdateringen sletter den. Ingenting var feilkonfigurert. Filen bodde i containerens skrivbare lag, som bare finnes for den containerinstansen. Sammenligningen som betyr noe, er ikke hvilket verktøy du bruker, men hvilke inndata utrullingen din erklærer. Alt du har redigert for hånd, er en inndata som utrullingen ikke kjenner.
To slags tilstand, den ene er engangs
En container har et skrivbart lag for endringer gjort ved kjøring, og det laget kastes når containeren erstattes. Det er ikke et konfigurasjonslager og ikke en sikkerhetskopi. Imageet pluss de erklærte inndataene er hele definisjonen av det som kjører.
Spør hvilke av VPN-filene dine som er erklærte inndata, og hvilke som er tilfeldigheter:
docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpnDiff viser hva som er endret i det skrivbare laget, og det er nettopp mengden av ting som vil forsvinne. Mount-oversikten viser hva som overlever. Å sammenligne de to svarer på spørsmålet før du mister noe.
Bind mount, navngitt volum eller secret: hva hver beskytter
Alle tre kan holde en VPN-profil, og de skiller seg i hvem som kan lese den og hva som skjer ved erstatning.
| 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 |
Et bind mount mapper en vertssti, så filen er like beskyttet som den stien og like synlig som vertens rettigheter tillater. Et navngitt volum styres av runtime og overlever fjerning av containeren, noe som gjør det til det sikrere standardvalget for tilstand som utrullingen eier. En secret-mekanisme er for materiale du ikke vil ha i et image eller en miljøvariabel.
Ikke behandle hver miljøvariabel og hver vertsfil som tilsvarende beskyttelse, for det er de ikke.
Å redigere inne i containeren er fellen
Fellen er ikke verktøyet, men retningen på redigeringen. En endring gjort inne i en kjørende container er usynlig for utrullingen, så den neste gjenskapingen ruller den stille tilbake, og symptomet ser ut som en regresjon i imageet. Hvis du må endre noe der for å diagnostisere, kopier det ut med en gang og legg det i den erklærte inndataen. Gjenskap deretter for å bevise at utrullingen reproduserer det.
En profil kan inneholde private nøkler og kontomateriale, noe som gjør en sikkerhetskopi av den filen til en oppgave med håndtering av hemmeligheter i stedet for en filkopi. Hold eierskap og lesetilgang begrenset til containerens faktiske prosess i stedet for å åpne en vertsmappe for å få en tillatelsesfeil til å forsvinne.
Den åpningen er hvordan en bekvemmelighet i containeren blir en eksponering av verten.
Gjenskap med vilje, og verifiser deretter fire ting
Noter imageversjonen, enheten og egenskapene som kreves, nettverkstilkoblingen og de vedvarende inndataene. Listen over enheter og egenskaper er spesielt viktig for en VPN-container, fordi tunnelen trenger nettverksenheten og privilegiet til å konfigurere den.
Bekreft hvilken generert kjøretidstilstand som skal bygges på nytt i stedet for lagres. Nøklene som tunnelen genererte ved første oppstart, er tilstand, og om du beholder dem eller genererer dem på nytt, er en beslutning med konsekvenser for hver peer som kjenner den gamle offentlige nøkkelen.
Etter en kontrollert gjenskapning, verifiser identitet, ruting, DNS og den påkrevde feilblokkeringen. En prosess som starter uten feil, beviser ingen av de fire. Kontroller det mens tunnelen er oppe, og igjen etter at du har stoppet den, fordi feilblokkeringen bare viser seg når tunnelen forsvinner.
Hold en gjenopprettingskopi utenfor containeren
Hold en gjenopprettingskopi som lever uavhengig av containeren, og test å gjenopprette den gjennom den dokumenterte prosessen. En utestet sikkerhetskopi av en VPN-profil er et håp, spesielt når gjenopprettingsveien involverer tillatelser som containerprosessen trenger.
Hvis en container som eier en VPN erstattes, koordiner applikasjonene som deler nettverksstakken dens, innenfor runtimeens støttede livssyklus.
Den koordineringen er forskjellen mellom en omstart og et avbrudd. Utrullingen bør beskrive hvor konfigurasjonen kommer fra, og volumedokumentasjonen er stedet å kontrollere hva runtime faktisk bevarer.