Comment partager un dossier entre mes fichiers Windows et un conteneur Docker en montant un volume à l'aide de la simple commande --volume
à l'aide de Docker Toolbox on?
J'utilise "Docker Quickstart Terminal" et quand j'essaye ceci:
winpty docker run -it --rm --volume /C/Users/myuser:/myuser ubuntu
J'ai cette erreur:
Invalid value "C:\\Users\\myuser\\:\\myuser" for flag --volume: bad mount mode specified : \myuser
See 'docker run --help'.
Après ceci , j'ai aussi essayé
winpty docker run -it --rm --volume "//C/Users/myuser:/myuser" ubuntu
et j'ai
Invalid value "\\\\C:\\Users\\myuser\\:\\myuser" for flag --volume: \myuser is not an absolute path
See 'docker run --help'.
C’est en fait un numéro du projet } et il existe deux solutions de contournement:
Créer 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 l'hôte de docker:
docker-machine ssh default
Et à partir de là faire un classique:
docker run -it --rm --volume /c/Users/myuser:/myuser ubuntu
Il s'agit d'une amélioration de la réponse sélectionnée car cette réponse est limitée au dossier c:\Users. Si vous souhaitez créer un volume en utilisant un répertoire en dehors de c:\Users, il s'agit d'une extension.
Dans Windows 7, j'ai utilisé docker toolbox. Il a utilisé Virtual Box.
Par exemple, dans mon cas, j'ai inclus:
**Name**: c:\dev
**Path**: c/dev
Utilisez cette commande:
$ docker-machine restart
Pour vérifier que cela a fonctionné, procédez comme suit:
En utilisant cette commande:
$ docker-machine ssh
Dans mon cas, j'utilise cette commande
$ cd /c/dev
Vous verrez quelque chose comme ça:
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 cela vous sera utile.
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. Commencez par partager le lecteur dans les paramètres, puis utilisez le format de lettre de lecteur C:
, mais utilisez des barres obliques. Par exemple, j'ai créé un répertoire H:\t\REDIS
et j'ai pu le voir monté sur /data
dans le conteneur à l'aide de cette commande:
docker run -it --rm -v h:/t/REDIS:/data redis sh
Le même format, utilisant une lettre de lecteur et deux points, puis des barres obliques pour le séparateur de chemin fonctionnait à la fois à partir de la commande windows Invite et de git bash.
J'ai trouvé cette question en train de chercher une réponse sur Google, mais je n'ai rien trouvé qui fonctionne. Les choses sembleraient fonctionner sans erreurs, mais je ne pouvais tout simplement pas voir les données sur l'hôte (ou l'inverse). Enfin, j'ai vérifié les paramètres de près et essayé le format indiqué:
Donc, tout d’abord, vous devez partager l’ensemble du lecteur avec le paramètre docker vm dans les paramètres ici. Je pense que cela donne à la machine virtuelle «docker-machine» s’exécutant avec un accès hyper-v sur ce lecteur. Ensuite, vous devez utiliser le format indiqué ici, qui ne semble exister que dans cette seule image et dans aucune documentation ou question que je pourrais trouver sur le Web:
docker run --rm -v c:/Users:/data Alpine ls /data
Pour ceux qui utilisent Virtual Box qui préfère en ligne de commande approche
1) Assurez-vous que le docker-machine ne fonctionne pas
Docker Quickstart Terminal:
docker-machine stop
2) Créez le partage Windows <-> docker-machine
Invite de commande Windows:
(Modifiez ce qui suit pour correspondre à votre scénario. Je nourris mon conteneur Apache httpd à partir d'un 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 le docker-machine et monter le volume dans un nouveau conteneur
Docker Quickstart Terminal:
(Encore une fois, je commence un conteneur Apache httpd, d’où le port exposé.)
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 recherchez une solution qui résoudra tous les problèmes de Windows et fonctionnera sous le système d'exploitation Windows de la même manière que sous Linux, reportez-vous à la section ci-dessous. J'ai testé cela et cela fonctionne dans tous les cas. Je montre aussi comment je l’obtiens (les étapes et le processus de réflexion). J'ai également écrit un article sur l'utilisation de Docker et le traitement des problèmes liés au menu fixe ici.
dossiers de partage boîte à outils virtualBox et conteneur d'images Windows 7 et nodejs
utilisation de ... Docker Quickstart Terminal [QST] Explorateur Windows [WE]
commençons...
[QST] ouvrir le terminal Docker Quickstart
[QST] arrêter la machine virtuelle
$ arrêt docker-machine
[WE] ouvre un explorateur de fenêtres
[WE] aller au répertoire d'installation de virtualBox
[WE] ouvrir un cmd et exécuter ...
C:\Programmes\Oracle\VirtualBox> VBoxManage sharedfolder ajoute "default" --name "/ D/SVN_FOLDERS/X2R2_WP6/nodejs" --hostpath "\?\D:\SVN_FOLDERS\X2R2_WP6\nodejs" - montage automatique
vérifier dans la machine virtuelle Oracle que le nouveau dossier partagé est apparu
[QST] démarrer machine virtuelle
$ docker-machine start
docker stop nodejs
docker rm nodejs
docker run -d -it --rm --name nodejs -v/d/SVN_FOLDERS/X2R2_WP6/nodejs:/usr/src/app -w/usr/src/app node2
docker exec -i -t nodejs/bin/bash
L'utilisation de doubles barres obliques doubles a fonctionné pour moi sous Windows 7:
docker run --rm -v //c/Users:/data Alpine ls /data/
Tiré d'ici: https://github.com/moby/moby/issues/12590
Je l'ai résolu!
Ajouter un volume:
docker exécuter -d -v mon-nom-volume: C:\MyNamedVolume testimage: last
Monter un répertoire d'hôte:
docker exécuter -d -v C:\Temp\123: C:\Mon\Partagé\Dir testimage: dernière