Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
¿Es posible cambiar el estado de solo lectura/lectura y escritura de un montaje acoplable en tiempo de ejecución?

Tengo una aplicación dockerizada que usa el sistema de archivos para almacenar muchos estados. El código de la aplicación está contenido en la imagen de la ventana acoplable.

Estoy considerando una estrategia de actualización que implica compartir el volumen entre dos contenedores, pero asegurándome de que, como máximo, un contenedor a la vez pueda escribir en ese sistema de archivos.

El flujo de trabajo sería:

  • inicie el contenedor A con /data montado rw
  • inicie el contenedor B con /data montado ro y una versión más reciente de la aplicación
  • dejar de entregar solicitudes al contenedor A
  • para el contenedor A, haga que el montaje /data sea de solo lectura
  • para el contenedor B, haga que el montaje /data sea de lectura y escritura
  • comenzar a entregar solicitudes al contenedor B
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede volver a montar su volumen desde el interior del contenedor, en el modo rw , así:

 mount -o remount,rw /mnt/data

El problema es que montar syscall no está permitido dentro de los contenedores de Docker de forma predeterminada, por lo que tendría que ejecutarlo en un modo privilegiado:

 docker run --privileged ...

o habilite la capacidad SYS_ADMIN

SYS_ADMIN Realiza una serie de operaciones de administración del sistema.

 docker run --cap-add=SYS_ADMIN --security-opt apparmor:unconfined

(Tenga en cuenta que también tuve que agregar --security-opt apparmor:unconfined, para que esto funcione en Ubuntu).

Además, volver a montar el volumen rw de nuevo a ro puede ser complicado, ya que es posible que algunos procesos ya hayan abierto algunos archivos dentro de él para escribir, en cuyo caso el remount fallará con el mensaje de error is busy .

Pero supongo que puede reiniciar el contenedor en su lugar (ya que sería el que ejecuta una versión anterior de la aplicación).

about 4 years ago · Santiago Trujillo Denunciar

0

No es exactamente lo que solicitó el OP, pero tuve una pregunta similar en la que necesitaba obtener datos FUERA del contenedor en ejecución, pero había montado RW.

Otras formas de extraer los datos habrían llevado demasiado tiempo.

Mi acercamiento ? Guarde el contenedor como una imagen y comience un nuevo contenedor a partir de esa imagen con un montaje como RW: D

Comienzo inicial del contenedor:

 docker run -p 80:8080 --mount type=bind,source="C:\data-folder-local\",target=/data-folder-container-ro,readonly -d imageName:imageTag

Haciendo una imagen del contenedor. Puede detener este contenedor antes/después si lo desea.

 docker commit -a "mud" -m "Damn, mount should be rw, stashing a snapshot to reuse." CONTAINER_ID_HERE snapshotImageName:snapshotImageTag

donde CONTAINER_ID_HERE obtuve de la salida de docker ps ( https://docs.docker.com/engine/reference/commandline/ps/ )

Inicie un nuevo contenedor a partir de la imagen creada, ¡pero esta vez monte con derechos de escritura!

 docker run -p 80:8080 --mount type=bind,source="C:\data-folder-local\",target=/data-folder-container-rw -d snapshotImageName:snapshotImageTag

escriba archivos en la carpeta de montaje (en el sistema local) desde dentro de su contenedor: D

Espero que eso ayude a alguien.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda