La configuració de VPN només sobreviu a la recreació del contenidor si la munteu
Un fitxer editat dins d'un contenidor en execució viu en una capa que desapareix. Compareu els bind mounts, els volums i els secrets, i després recreu i verifiqueu quatre coses.
Editeu la configuració de WireGuard dins d'un contenidor en execució, funciona, i la propera actualització de la imatge l'esborra. No hi havia res mal configurat. El fitxer vivia a la capa d'escriptura del contenidor, que només existeix per a aquesta instància del contenidor. La comparació que importa no és quina eina fer servir, sinó quines entrades declara el vostre desplegament. Tot el que heu editat a mà és una entrada que el desplegament no coneix.
Dos tipus d'estat, un és prescindible
Un contenidor té una capa d'escriptura per als canvis fets en temps d'execució, i aquesta capa es descarta quan el contenidor se substitueix. No és un magatzem de configuració ni una còpia de seguretat. La imatge més les entrades declarades són la definició completa del que s'executa.
Pregunteu quins dels vostres fitxers VPN són entrades declarades i quins són accidents:
docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpnEl diff llista què ha canviat a la capa d'escriptura, que és exactament el conjunt de coses que desapareixeran. El llistat de muntatges mostra què sobreviu. Comparar els dos respon la pregunta abans que perdeu res.
Bind mount, volum amb nom o secret: què protegeix cada un
Tots tres poden contenir un perfil de VPN, i difereixen en qui el pot llegir i què passa en la substitució.
| 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 |
Un bind mount assigna una ruta de l'amfitrió, així que el fitxer està tan protegit com ho està aquesta ruta i tan visible com ho permeten els permisos de l'amfitrió. Un volum amb nom el gestiona el runtime i sobreviu a l'eliminació del contenidor, cosa que el converteix en l'opció per defecte més segura per a l'estat que posseeix el desplegament. El mecanisme de secret és per a material que no voleu en una imatge o en una variable d'entorn.
No tracteu cada variable d'entorn i cada fitxer de l'amfitrió com una protecció equivalent, perquè no ho són.
Editar dins del contenidor és el parany
El parany no és l'eina, sinó la direcció de l'edició. Un canvi fet dins d'un contenidor en execució és invisible per al desplegament, així que la propera recreació el reverteix en silenci i el símptoma sembla una regressió a la imatge. Si heu de fer un canvi allà per diagnosticar, copieu-lo immediatament a fora i poseu-lo a l'entrada declarada. Després recreeu per demostrar que el desplegament el reprodueix.
Un perfil pot portar claus privades i material de compte, cosa que fa que una còpia de seguretat d'aquest fitxer sigui una tasca de gestió de secrets en lloc d'una còpia de fitxer. Mantingueu la propietat i l'accés de lectura limitats al procés real del contenidor, en lloc d'ampliar un directori de l'amfitrió per fer desaparèixer un error de permisos.
Aquesta ampliació és com una comoditat del contenidor es converteix en una exposició de l'amfitrió.
Recreeu deliberadament i després verifiqueu quatre coses
Anoteu la versió de la imatge, el dispositiu i les capacitats necessaris, la connexió de xarxa i les entrades persistents. La llista de dispositiu i capacitats és especialment important per a un contenidor VPN, perquè el túnel necessita el dispositiu de xarxa i el privilegi de configurar-lo.
Confirmeu quin estat generat en temps d'execució s'ha de reconstruir en lloc de desar. Les claus que el túnel va generar a la primera arrencada són estat, i si les manteniu o les regenereu és una decisió amb conseqüències per a cada peer que coneix la clau pública antiga.
Després d'una recreació controlada, verifiqueu la identitat, l'encaminament, el DNS i el bloqueig de fallada necessari. Un procés que arrenca sense errors no demostra cap d'aquestes quatre coses. Comproveu-ho mentre el túnel està actiu i de nou després d'aturar-lo, perquè el bloqueig de fallada només es mostra quan el túnel desapareix.
Mantingueu una còpia de recuperació fora del contenidor
Mantingueu una còpia de recuperació que visqui independentment del contenidor, i proveu de restaurar-la pel procés documentat. Una còpia de seguretat no provada d'un perfil de VPN és una esperança, sobretot quan el camí de restauració implica permisos que el procés del contenidor necessita.
Si es substitueix un contenidor propietari d'una VPN, coordineu les aplicacions que comparteixen la seva pila de xarxa dins del cicle de vida suportat del runtime.
Aquesta coordinació és la diferència entre un reinici i una interrupció. El desplegament hauria de descriure d'on ve la configuració, i la documentació dels volums és el lloc on comprovar què persisteix realment el runtime.