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'.

Suivant , j'ai aussi essayé

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'.
29
demandé sur Community 2015-10-14 16:10:59

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.

  1. Ouvrir virtual box
  2. Sélectionner la machine (dans mon cas par défaut).
  3. cliquez sur le bouton droit de la souris et sélectionnez l'option Paramètres
  4. aller à partagé Dossiers
  5. inclure un nouveau dossier machine.

Par exemple, dans mon cas, j'ai compris:

**Name**: c:\dev
**Path**: c/dev
  1. cliquez et fermez
  2. 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:

  1. SSH à la docker machine.

en utilisant ceci commande:

$ docker-machine ssh
  1. Allez dans le dossier que vous avez partagé/monté.

Dans mon cas, j'utilise cette commande

$ cd /c/dev
  1. 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.

31
répondu jmgoyesc 2017-02-24 09:30:41

C'est en fait un question du projet et il y a 2 solutions:

  1. 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
    
  2. 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
    
25
répondu Anthony O. 2015-10-15 14:38:51

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:

enter image description here

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
5
répondu Jason Goemaat 2016-08-27 13:41:36

essaye ceci:

  1. 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.
  2. $ 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.

2
répondu Thoran 2016-04-22 12:47:07

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
2
répondu Jaroslav Záruba 2017-06-19 19:48:00

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)
1
répondu Grzegorz Gajos 2018-06-01 13:18:59

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

-1
répondu Hugo Kokay 2017-10-02 17:06:32