Utilice unidades USB montadas automáticamente en el contenedor Docker

Utilice unidades USB montadas automáticamente en el contenedor Docker

Con Ubuntu, las unidades USB se montan automáticamente /media/<user>/<drive>cuando se conectan. Quería usar esto para que las unidades USB recién conectadas estuvieran disponibles en un contenedor Docker en ejecución. Entonces solía -v /media/<user>:/media/<user>montar todo el directorio principal de los puntos de montaje USB en el contenedor.

Esto funciona bien si la unidad USB estaba conectadaantesel contenedor comienza. En este caso el punto de montaje USB tiene permisos 0777y pertenece a <user>. Si se conecta una unidad USB cuando el contenedor estáya corriendo, el punto de montaje aparece en el contenedor pero tiene permisos 0700y es propiedad de root.

¿Alguien puede arrojar algo de luz sobre lo que posiblemente esté sucediendo aquí? Me imagino que las unidades USB se montan automáticamente como 0700pertenecientes a rootpor defecto y luego se activa algún otro mecanismo para cambiar esto a 0777y <user>. Docker solo no recoge el cambio. ¿Es esto cierto?

Ya busqué en toneladas de hilos de foros y listas de correo, pero no pude entender el mecanismo. También probé algunas reglas de udev (comoÉste) pero estos no tuvieron ningún efecto.

Respuesta1

Sé que la pregunta es de 2018, pero una solución sería usar montajes de enlace y configurar la "propagación de enlace" en "compartida" (no disponible para volúmenes).

En lugar de:

-v /media/<user>:/media/<user>

Usar:

--mount type=bind,source=/media/<user>,target=/media/<user>,bind-propagation=shared

Más información sobre la propagación de enlaces:https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation

Respuesta2

rsharedLos submontajes del montaje original se exponen a montajes de réplica y los submontajes de montajes de réplica también se propagan al montaje original. pero la propagación también se extiende hacia y desde los puntos de montaje anidados dentro de cualquiera de los puntos de montaje originales o de réplica.

docker run -v /media/$(whoami):/storage:rshared -it ubuntu bash

Más información sobre el montaje automático:

https://github.com/moby/moby/issues/32512
https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation

información relacionada