Est-il possible de monter un ISO à l'intérieur d'un conteneur docker?
Je suis en utilisant un conteneur docker (basé sur l'officiel de centos:6.4 de l'image) pour construire un ISO que j'ai ensuite besoin de monter et de vérifier. Je suis incapable de monter l'ISO à l'aide de:
sudo mount -o loop /path/to/iso /mnt
Donne:
mount: Could not find any loop device. Maybe this kernel does not know
about the loop device? (If so, recompile or `modprobe loop'.)
Il ressemble le noyau a été compilé sans boucle dispositif de soutien. Est-il possible de construire des images docker qui soutien de dispositifs de boucle? Je ne pouvais pas trouver toutes les informations sur ceci, cependant, en regardant ce fil il semble que ce peut être un sujet permanent.
Je me demande si il existe un moyen de contourner cette limitation?
OriginalL'auteur pxul | 2014-02-25
Vous devez vous connecter pour publier un commentaire.
Pour monter un ISO à l'intérieur d'un conteneur, vous avez besoin de deux choses:
Par défaut, le Panneau verrouille les deux choses; c'est pourquoi vous obtenez ce message d'erreur.
La solution la plus simple est de démarrer le conteneur en mode privilégié:
Une plus fine de la solution est de plonger vers le bas dans les appareils cgroup et conteneur des capacités à donner les autorisations requises.
Notez que vous ne pouvez pas exécuter des opérations privilégiées dans le cadre d'un Dockerfile; c'est à dire si vous avez besoin de monter l'ISO dans un Dockerfile, vous ne serez pas en mesure de le faire.
Cependant, je recommande que vous regardez Xorriso et plus précisément à la osirrox outil , qui permet d'extraire des fichiers à partir d'images ISO comme vous le feriez d'extraire d'un fichier tar, sans exiger de tout type d'accès spécial, par exemple:
osirrox
. Merci!Correction typographique, devrait être
docker run --privileged ...
(double tableau de bord, c'est à dire, de l'option).OriginalL'auteur jpetazzo
J'ai le sentiment que ce n'est pas une bonne façon de résoudre mon problème, mais c'est ce que j'ai fait pour le moment, jusqu'à ce qu'un plus sain idée se présente à lui.
Mon conteneur démarre en bash, à partir de cette coque, je suis en mesure d'ajouter des dispositifs de boucle à l'aide de:
et maintenant, j'ai des dispositifs de boucle disponible, donc je suis en mesure de monter un ISO. Cependant, j'ai remarqué que la première boucle de l'appareil a été pour moi
/dev/loop2
:cela implique que loop0 et loop1 sont déjà en cours d'utilisation, ce qui est confirmé par:
et, c'est pourquoi je pense que cette solution est mauvaise, à partir de l'extérieur du récipient:
Donc il semble que la première boucle 2 appareils que j'ai créé dans le conteneur mappé à loop0 et loop1 à l'extérieur du conteneur, qui est pourquoi ils n'étaient pas disponibles pour l'utilisation. Je suppose qu'il doit y avoir un moyen de mise en place de ces dispositifs avec devicemapper (qui est utilisé par docker, par les regards) mais je n'ai pas pu tourner beaucoup d'info sur cette.
Pour le moment, cette solution est acceptable pour moi - je vais juste être prudent de se rappeler à
umount
l'image quand j'en aurais fini avec elle.Je suis conscient que c'est loin d'être un sain solution, donc si quelqu'un d'autre peut venir avec un meilleur plan, je suis preneuse.
OriginalL'auteur pxul
Je doute que c'est le noyau. Il ressemble plus à votre menu fixe conteneur n'a pas de dispositifs de boucle. Avez-vous essayé d'utiliser
losetup
?losetup
page de manuel suggèrent que la boucle d'entrées dans /dev, ce qui dans ce cas, ils ne le font pas (le contenu de/dev
:console full kmsg mapper null ptmx pts random shm stderr stdin stdout tty tty1 urandom zero
). Il ressemblait à l'aide dedmsetup
pourrait être une option, mais encore une fois, il n'y a pas beaucoup d'informations sur la façon dont cela sera fait.Ce n'
losetup -f
vous donner?Même que je l'obtenir à partir de la commande mount:
losetup: Could not find any loop device. Maybe this kernel does not know about the loop device? (If so, recompile or modprobe loop.)
Que faut-il faire à l'extérieur du conteneur? Il pourrait être tout simplement que le conteneur est l'interdisant. Même noyau dans le conteneur comme à l'extérieur, n'oubliez pas.
À droite, oui, je dois être honnête, je n'ai été jouer avec menu fixe pour un couple de jours, donc je suis toujours à trouver mes pieds un peu. Montage d'images à l'extérieur du conteneur est très bien (je suis sous Fedora 20, avec le docker-io paquet - version 0.7.6). J'ai essayé de monter un ISO à l'aide d'un privilège conteneur "de base" (Ubuntu) de l'image et cela fonctionne très bien, donc comme tu dis, ça doit être une limitation de l'image. Je vais prendre un coup d'oeil autour et voir si il n'y a aucune info sur la création d'images avec boucle de soutien (comme Ubuntu image de base). Merci pour votre aide.
OriginalL'auteur abligh