Editas la configuración de WireGuard dentro de un contenedor en ejecución, funciona, y la siguiente actualización de la imagen la borra. Nada estaba mal configurado. El archivo vivía en la capa de escritura del contenedor, que existe solo para esa instancia del contenedor. La comparación que importa no es qué herramienta usar, sino qué entradas declara tu despliegue. Todo lo que editaste a mano es una entrada que el despliegue no conoce.

Dos tipos de estado, uno es desechable

Un contenedor tiene una capa de escritura para los cambios hechos en tiempo de ejecución, y esa capa se descarta cuando el contenedor se reemplaza. No es un almacén de configuración ni una copia de seguridad. La imagen más las entradas declaradas son la definición completa de lo que se ejecuta.

Pregúntate cuáles de tus archivos de VPN son entradas declaradas y cuáles son accidentes:

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

El diff enumera qué cambió en la capa de escritura, que es exactamente el conjunto de cosas que desaparecerán. El listado de montajes muestra qué sobrevive. Comparar los dos responde la pregunta antes de que pierdas algo.

Bind mount, volumen con nombre o secreto: qué protege cada uno

Los tres pueden contener un perfil de VPN, y difieren en quién puede leerlo y qué pasa en el reemplazo.

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

Un bind mount asigna una ruta del host, así que el archivo está tan protegido como lo esté esa ruta y tan visible como lo permitan los permisos del host. Un volumen con nombre lo gestiona el runtime y sobrevive a la eliminación del contenedor, lo que lo convierte en la opción predeterminada más segura para el estado que posee el despliegue. Un mecanismo de secreto es para material que no quieres en una imagen o en una variable de entorno.

No trates cada variable de entorno y cada archivo del host como una protección equivalente, porque no lo son.

Editar dentro del contenedor es la trampa

La trampa no es la herramienta, sino la dirección de la edición. Un cambio hecho dentro de un contenedor en ejecución es invisible para el despliegue, así que la siguiente recreación lo revierte en silencio y el síntoma parece una regresión en la imagen. Si debes hacer un cambio allí para diagnosticar, cópialo fuera de inmediato y ponlo en la entrada declarada. Luego recrea para demostrar que el despliegue lo reproduce.

Un perfil puede llevar claves privadas y material de cuenta, lo que hace que una copia de seguridad de ese archivo sea una tarea de manejo de secretos en lugar de una copia de archivo. Mantén la propiedad y el acceso de lectura limitados al proceso real del contenedor, en lugar de ampliar un directorio del host para que desaparezca un error de permisos.

Esa ampliación es cómo una comodidad del contenedor se convierte en una exposición del host.

Recrea a propósito y luego verifica cuatro cosas

Anota la versión de la imagen, el dispositivo y las capacidades necesarios, la conexión de red y las entradas persistentes. La lista de dispositivo y capacidades importa especialmente para un contenedor de VPN, porque el túnel necesita el dispositivo de red y el privilegio para configurarlo.

Confirma qué estado generado en tiempo de ejecución debe reconstruirse en lugar de guardarse. Las claves que el túnel generó en el primer arranque son estado, y si las conservas o las regeneras es una decisión con consecuencias para cada peer que conoce la clave pública antigua.

Tras una recreación controlada, verifica identidad, enrutamiento, DNS y el bloqueo de fallo requerido. Un proceso que arranca sin errores no demuestra ninguno de esos cuatro. Compruébalo mientras el túnel está activo y de nuevo después de detenerlo, porque el bloqueo de fallo solo se muestra cuando el túnel desaparece.

Mantén una copia de recuperación fuera del contenedor

Mantén una copia de recuperación que viva independientemente del contenedor, y prueba restaurarla mediante el proceso documentado. Una copia de seguridad no probada de un perfil de VPN es una esperanza, sobre todo cuando la ruta de restauración implica permisos que el proceso del contenedor necesita.

Si se reemplaza un contenedor propietario de una VPN, coordina las aplicaciones que comparten su pila de red dentro del ciclo de vida compatible del runtime.

Esa coordinación es la diferencia entre un reinicio y una interrupción. El despliegue debería describir de dónde viene la configuración, y la documentación de volúmenes es el lugar para comprobar qué persiste realmente el runtime.

Artículos relacionados