Use unidades USB montadas automaticamente no contêiner Docker

Use unidades USB montadas automaticamente no contêiner Docker

Com o Ubuntu, as unidades USB são montadas automaticamente /media/<user>/<drive>quando são conectadas. Eu queria usar isso para disponibilizar unidades USB recém-conectadas em um contêiner Docker em execução. Então, eu costumava -v /media/<user>:/media/<user>montar todo o diretório pai dos pontos de montagem USB no contêiner.

Isso funciona bem se a unidade USB estiver conectadaanteso contêiner é iniciado. Neste caso, o ponto de montagem USB tem permissões 0777e pertence a <user>. Se uma unidade USB estiver conectada quando o contêiner estiverjá correndo, o ponto de montagem aparece no contêiner, mas tem permissões 0700e pertence a root!

Alguém pode lançar alguma luz sobre o que possivelmente está acontecendo aqui? Posso imaginar que as unidades USB são montadas automaticamente como 0700pertencentes a rootpor padrão e depois algum outro mecanismo entra em ação para alterar isso para 0777e <user>. Somente a alteração não é captada pelo Docker. Isso é verdade?

Já vasculhei vários tópicos de fóruns e listas de discussão, mas não consegui descobrir o mecanismo. Eu também tentei algumas regras do udev (comoEste), mas não tiveram efeito.

Responder1

Sei que a pergunta é de 2018, mas uma solução seria usar montagens de ligação e definir a "propagação de ligação" como "compartilhada" (não disponível para volumes).

Em vez de:

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

Usar:

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

Mais informações sobre propagação de ligação:https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation

Responder2

rsharedAs submontagens da montagem original são expostas às montagens de réplica, e as submontagens das montagens de réplica também são propagadas para a montagem original. mas a propagação também se estende de e para pontos de montagem aninhados em qualquer um dos pontos de montagem originais ou de réplica.

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

Mais informações sobre montagem automática:

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

informação relacionada