web-dev-qa-db-fra.com

Exposer Fuse monté à l'intérieur d'un conteneur de menu fixe

J'essaie d'exécuter une image de menu fixe pour le montage de hubic (stockage en ligne) et de l'exposer à l'hôte.

Ce qui fonctionne jusqu’à présent, c’est que le conteneur monte correctement le point de fusion (à /mnt/hubic)

Lorsque j'exécute docker, j'essaie de l'exécuter avec le volume mappé en tant que /path/on/Host:/mnt/hubic (cela signifie que le docker crée le répertoire s'il n'existe pas), mais le contenu n'apparaît jamais. Si j'entre dans le conteneur, je peux voir les fichiers du stockage en ligne mais le dossier de l'hôte ne contient rien

Y a-t-il une option qui me manque pour permettre à docker de le faire?

Commande que j'utilise pour démarrer le conteneur

docker run -v ~/.hubicfuse:/root/.hubicfuse -v /tmp/mounted:/mnt/hubic --device /dev/Fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined -it {container_name}

4
exussum

La solution vient de la poste s3 monté à l'intérieur du conteneur. Comment l'exposer à l'hôte?

Dans cet article, il est décrit une solution utilisant glusterFS, nécessitant davantage d'autorisations pour le conteneur. La commande docker utilisée:

docker run --cap-add SYS_ADMIN --device Fuse -v Host_mount_dir:container_mount_dir:shared IMAGE COMMAND

Pour une erreur comme "Path/foo est monté sur/foo mais ce n'est pas un montage partagé ...", la raison en est que le démon docker s'exécute dans un espace de noms de montage différent de celui de systemd. Voici la solution pour le faire fonctionner dans le même espace de noms:

mkdir -p /etc/systemd/system/docker.service.d/
cat <<EOF > /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF

Et redémarrez le démon docker.

Une remarque est que le montage est visible sur l'hôte s'il est monté dans un répertoire lié par -v.

4
harrymc