Comment utiliser l'option -- volume avec Docker Toolbox sur Windows?
Comment puis-je partager un dossier entre mes fichiers Windows et un conteneur docker, en montant un volume avec simple --volume
commande utilisant Docker Toolbox on?
j'utilise "Docker Quickstart Terminal" et quand j'essaie ceci:
winpty docker run -it --rm --volume /C/Users/myuser:/myuser ubuntu
j'ai cette erreur:
Invalid value "C:Usersmyuser:myuser" for flag --volume: bad mount mode specified : myuser
See 'docker run --help'.
winpty docker run -it --rm --volume "//C/Users/myuser:/myuser" ubuntu
et a obtenu
Invalid value "\C:Usersmyuser:myuser" for flag --volume: myuser is not an absolute path
See 'docker run --help'.
7 réponses
ceci est une amélioration de la réponse choisie parce que cette réponse est limitée à c:\Users dossier. Si vous voulez créer un volume en utilisant un répertoire en dehors de c:\Users c'est une extension.
dans windows 7, j'ai utilisé Docker toolbox. Il utilisait la boîte virtuelle.
- Ouvrir virtual box
- Sélectionner la machine (dans mon cas par défaut).
- cliquez sur le bouton droit de la souris et sélectionnez l'option Paramètres
- aller à partagé Dossiers
- inclure un nouveau dossier machine.
Par exemple, dans mon cas, j'ai compris:
**Name**: c:\dev
**Path**: c/dev
- cliquez et fermez
- ouvrez "Docker Quickstart Terminal" et redémarrez la machine docker.
Utilisez cette commande:
$ docker-machine restart
Pour vérifier qu'il fonctionne, procédez comme suit:
- SSH à la docker machine.
en utilisant ceci commande:
$ docker-machine ssh
- Allez dans le dossier que vous avez partagé/monté.
Dans mon cas, j'utilise cette commande
$ cd /c/dev
- vérifiez le propriétaire utilisateur du dossier. Vous pouvez utiliser "ls" et vérifier que le propriétaire sera "docker"
Vous verrez quelque chose comme ceci:
docker@default:/c/dev$ ls -all
total 92
drwxrwxrwx 1 docker staff 4096 Feb 23 14:16 ./
drwxr-xr-x 4 root root 80 Feb 24 09:01 ../
drwxrwxrwx 1 docker staff 4096 Jan 16 09:28 my_folder/
dans ce cas, vous pourrez créer un volume pour ce dossier.
Vous pouvez utiliser ces commandes:
docker create -v /c/dev/:/app/dev --name dev image
docker run -d -it --volumes-from dev image
ou
docker run -d -it -v /c/dev/:/app/dev image
les Deux commandes fonctionnent pour moi. J'espère que ce sera utile.
C'est en fait un question du projet et il y a 2 solutions:
Création d'un volume de données:
docker create -v //c/Users/myuser:/myuser --name data hello-world winpty docker run -it --rm --volumes-from data ubuntu
SSHing directement dans le panneau de l'hôte:
docker-machine ssh default
Et à partir de là à faire un classique:
docker run -it --rm --volume /c/Users/myuser:/myuser ubuntu
depuis août 2016 Docker pour windows utilise maintenant hyper-v directement au lieu de virtualbox, donc je pense que c'est un peu différent. Partagez d'abord le lecteur dans les paramètres puis utilisez le C:
format de lettre d'entraînement, mais utiliser des slashs avant. Par exemple, j'ai créé une H:\t\REDIS
et a pu le voir monté sur /data
dans le récipient avec cette commande:
docker run -it --rm -v h:/t/REDIS:/data redis sh
le même format, en utilisant la lettre de commande et un deux-points puis slash vers l'avant pour le séparateur de chemin travaillé à la fois de Windows command prompt et de git bash.
j'ai trouvé cette question sur Google pour trouver une réponse, mais je n'ai rien trouvé qui fonctionne. Les choses semblent fonctionner sans erreurs lancées, mais je ne pouvais pas voir les données sur l'hôte (ou vice-versa). Enfin j'ai vérifié les paramètres de près et j'ai essayé le format qu'ils montrent:
donc tout d'abord, vous devez partager l'ensemble du lecteur à la VM docker dans les paramètres ici, je je pense que ça donne à la vm "docker-machine" un accès hyper-v à ce lecteur. Ensuite, vous devez utiliser le format montré ici, qui semble n'exister que dans cette image et dans aucune documentation ou questions que je pourrais trouver sur le web:
docker run --rm -v c:/Users:/data alpine ls /data
essaye ceci:
- Ouvrir Panneau De Démarrage Du Terminal. S'il est déjà ouvert, run
$ cd ~
pour vous assurer que vous êtes dans le répertoire d'utilisateur Windows. $ docker run -it -v /$(pwd)/ubuntu:/windows ubuntu
cela fonctionnera si l'erreur est due à typo. Vous obtiendrez un dossier vide nommé ubuntu
dans votre répertoire utilisateur. Vous verrez ce dossier avec le nom windows
dans votre conteneur ubuntu.
Pour ceux qui utilisent Virtual Box qui préfèrent en ligne de commande approche
1) Assurez-vous que la docker-machine ne tourne pas
Panneau De Démarrage Du Terminal:
docker-machine stop
2) Créer le partage de Windows <-> panneau-machine
invite de commande Windows:
(Modifier suivantes pour s'adapter à votre scénario. J'alimente mon conteneur Apache httpd à partir du répertoire synchronisé via Dropbox.)
set VBOX=D:\Program Files\Oracle\VirtualBox\VBoxManage.exe
set VM_NAME=default
set NAME=c/htdocs
set HOSTPATH=%DROPBOX%\htdocs
"%VBOX%" sharedfolder add "%VM_NAME%" --name "%NAME%" --hostpath "%HOSTPATH%" --automount
3) Démarrer la docker-machine et monter le volume dans un nouveau conteneur
Panneau De Démarrage Du Terminal:
(Encore une fois, je démarre un conteneur Apache httpd, d'où ce port exposing.)
docker-machine start
docker run -d --name my-apache-container-0 -p 80:80 -v /c/htdocs:/usr/local/apache2/htdocs my-apache-image:1.0
si vous êtes à la recherche de la solution qui résoudra tous les problèmes de Windows et le fera fonctionner sur le système D'exploitation Windows de la même manière que sur Linux, alors voir ci-dessous. J'ai testé et ça marche dans tous les cas. Je montre aussi comment je l'obtiens (les étapes et le processus de pensée).
Solution 1: Utilisez VirtualBox (si vous pensez que ce n'est pas une bonne idée, voir la Solution 2 ci-dessous)
- ouvrir VirtualBox (vous l'avez déjà installé avec les outils docker)
- Créer machine virtuelle avec une deuxième carte ethernet - bridged, de cette façon il recevra l'adresse IP de votre réseau (il aura IP comme machine docker)
- Installer Ubuntu LTS qui est âgé de plus de 1 an
- Installer docker
- ajouter des répertoires partagés à la machine virtuelle et automatiser vos répertoires de projet (de cette façon vous avez accès au répertoire de projet à partir D'Ubuntu) mais peut encore travailler dans Windows
Bonus:
- Tout fonctionne de la même manière que sur Linux
- Pause / décompression de l'environnement dockerisé quand vous voulez
Solution 2: Utilisez VirtualBox (c'est très similaire à la solution 1 mais il montre aussi le processus de réflexion, qui pourrait être utile en résolvant des problèmes similaires)
- Lu que quelqu'un déplacer les dossiers de /C/Utilisateurs/Public et qui fonctionne https://forums.docker.com/t/sharing-a-volume-on-windows-with-docker-toolbox/4953/2
- essayez, réalisez que cela n'a pas beaucoup de sens dans votre cas.
- Lire la page en entier ici https://github.com/docker/toolbox/issues/607 et essayer toutes les solutions listées sur la page
- Trouver cette page (celui que vous êtes en train de lire) et essayer toutes les solutions d'autres commentaires
- trouver quelque part l'information que le réglage La variable D'environnement COMPOSE_CONVERT_WINDOWS_PATHS=1 pourrait résoudre le problème.
- Arrêt à la recherche de la solution pendant quelques mois
- revenir en arrière et vérifier les mêmes liens
- Criez profondément
- Sentir le siècle des lumières moment
- ouvrir VirtualBox (vous l'avez déjà installé avec les outils docker)
- créer une machine virtuelle avec une deuxième carte ethernet, de cette façon il recevra l'adresse IP de votre réseau (il recevra IP comme docker à la machine)
- Installer Ubuntu LTS qui est très récente (datant de moins de quelques mois)
- notez que l'automounting ne fonctionne pas vraiment et que l'intégration est brisée (comme le partage de presse-papiers, etc.).)
- Supprimer la machine virtuelle
- sortir et prendre un verre
- louer une voiture chère et aller à grande vitesse sur l'autoroute
- Détruire la voiture et mourir
- Respawn devant votre PC
- Installer Ubuntu LTS qui est plus de 1 an
- Essayez d'exécuter le panneau
- notez qu'il n'est pas installé
- Installer docker par apt-get install docker
- installer le docker suggéré.io
- Essayez d'exécuter docker-ecrire
- notez qu'il n'est pas installé
- apt get install docker-composer
- Essayez d'exécuter votre projet avec docker-ecrire
- notez que c'est une ancienne version
- Vérifiez votre niveau de puissance (it devrait être supérieure à 9000)
- rechercher comment installer la dernière version de docker et trouver le guide officiel https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Désinstaller le docker actuel-composer et docker.io
- installez docker en utilisant le guide officiel https://docs.docker.com/install/linux/docker-ce/ubuntu/
- ajouter des répertoires partagés à la machine virtuelle et automatiser vos répertoires de projet (de cette façon vous avoir accès au répertoire du projet à partir D'Ubuntu, de sorte que vous pouvez exécuter n'importe quelle commande docker)
j'ai trouvé!
Ajouter un volume:
docker run-d-v my-named-volume:C:\MyNamedVolume témoignage: latest
Monter un répertoire de l'hôte:
docker run-d-v C:\Temp\123:C:\My\Shared\Dir témoignage: dernier