Quelle est la meilleure façon de partager des fichiers de Windows vers Boot2docker VM?
J'ai préparé mon code sous Windows, mais je trouve que ce n'est pas facile à partager avec boot2docker.
Je trouve aussi que boot2docker ne peut pas persister mes modifications. Par exemple, je crée un dossier, /temp
, après avoir redémarré boot2docker. Ce dossier disparaît, et c'est très gênant.
Quel Est votre chemin lorsque vous avez du code sur Windows, mais que vous devez les dockeriser?
---mise à jour---
J'essaie de mettre à jour le paramètre dans VirtualBox et de redémarrer boot2docker, mais c'est ne fonctionne pas sur ma machine.
docker@boot2docker:/$ ls -al /c total 4 drwxr-xr-x 3 root root 60 Jun 17 05:42 ./ drwxrwxr-x 17 root root 400 Jun 17 05:42 ../ dr-xr-xr-x 1 docker staff 4096 Jun 16 09:47 Users/
5 réponses
Boot2Docker est une petite machine virtuelle Linux fonctionnant sur VirtualBox. Donc, avant de pouvoir utiliser vos fichiers (à partir de Windows) dans Docker (qui s'exécute dans cette machine virtuelle), vous devez d'abord partager votre code avec la machine virtuelle Boot2Docker elle-même.
Pour ce faire, vous montez votre dossier Windows sur la machine virtuelle lors de son arrêt (ici un nom de machine virtuelle de default
est supposé):
C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder \
add default -name win_share -hostpath c:/work
(Vous pouvez également ouvrir L'interface utilisateur VirtualBox et monter le dossier sur votre machine virtuelle comme vous l'avez fait dans votre capture d'écran!)
Maintenant ssh
dans la machine virtuelle Boot2Docker pour le Terminal de démarrage rapide Docker:
docker-machine ssh default
Ensuite, effectuez le montage:
- créez un dossier dans la machine virtuelle:
sudo mkdir /VM_share
- montez-y le dossier Windows:
sudo mount -t vboxsf win_share /VM_share
Après cela, vous pouvez accéder à C:/work
dans votre machine virtuelle Boot2Docker:
cd /VM_share
Maintenant que votre code est présent dans votre machine virtuelle, vous pouvez l'utiliser avec Docker, soit en le montant en tant que volume conteneur:
docker-machine ssh default
docker run --volume /VM_share:/folder/in/container some/image
Ou en l'utilisant lors de la construction de votre image Docker:
...
ADD /my_windows_folder /folder
...
J'ai Windows 10 Home edition avec Docker toolbox 1.12.2 et VirtualBox 5.1.6.
J'ai pu monter un dossier sous C:\Users
avec succès dans mon conteneur sans effectuer d'étapes supplémentaires telles que docker-machine ssh default
.
Exemple:
docker run -it --rm -v /c/Users/antonyj/Documents/code:/mnt ubuntu /bin/bash
Afin d'avoir vos fichiers sous C:\Users
est probablement la chose la plus simple à faire.
Si vous ne voulez pas avoir vos fichiers sous C:\Users
, vous devez suivre les étapes de la réponse acceptée .
En utilisant Docker Toolbox, le répertoire partagé ne peut que être /c/User
:
Répertoire non valide. Les répertoires de Volume doivent être sous votre répertoire D'utilisateurs
Entrez la description de l'image ici
Step1 & Step2 commande dans le "Docker Quickstart Terminal" dans la mise en œuvre de Step1 & Step2 peut être:
# Step 1. VirtualBox. Add the error in the command line, in the VirtualBox image interface manually add, as shown above.
"C:/Program Files/Oracle/VirtualBox/VBoxManage.exe" sharedfolder add default --name "E_DRIVE" --hostpath "e:\\" --automount
# Try 1. Only a temporary effect. Restart VM after sharing failure.
#docker-machine ssh default "sudo mkdir -p /e" # Create a directory identifier, consistent with the Windows drive letter
#docker-machine ssh default "sudo mount -t vboxsf -o uid=1000,gid=50 E_DRIVE /e"
# Try 2. Modify /etc/fstab. Do not use the permanent mount. Each restart /etc/fstab content will be reset
#docker-machine ssh default "sudo sed -i '$ a\E_DRIVE /e vboxsf uid=1000,gid=50 0 0' /etc/fstab"
# Step 2. `C:\Program Files\Docker Toolbox\start.sh` https://github.com/docker/machine/issues/1814#issuecomment-239957893
docker-machine ssh default "cat <<EOF | sudo tee /var/lib/boot2docker/bootlocal.sh && sudo chmod u+x /var/lib/boot2docker/bootlocal.sh
#!/bin/sh
mkdir -p /e
mount -t vboxsf -o uid=1000,gid=50 E_DRIVE /e
EOF
"
Redémarrez ensuite la machine virtuelle. Essayez ceci: docker run --name php-fpm --rm -it -v /e:/var/www/html php:7.1.4-fpm /bin/bash
Références:
Dans la barre D'état système, vous devriez avoir la baleine Docker mignon natation. Faites un clic droit et sélectionnez Paramètres.
Cliquez sur Appliquer. Cela fera apparaître la boîte de dialogue des informations d'identification et vous devrez fournir vos informations d'identification Windows actuelles. Assurez-vous de le donner correctement. Je soupçonne aussi que vous pourriez avoir besoin d'être un administrateur.
Pour monter notre répertoire hôte (C:\data) dans un conteneur, nous allons utiliser le drapeau -v
(volume) pendant l'exécution conteneur. Un exemple d'exécution est montré ici:
J'ai CentOS dans mon conteneur Docker local.
docker run -v c:/data:/data **centos** ls /data
Monter le dossier partagé invité Windows avec L'hôte Linux (nom de la machine virtuelle 'par défaut'):
Arrêt de la machine virtuelle par défaut:
cd "C:\Program Files\Oracle\VirtualBox"
VBoxManage controlvm default poweroff
Ajouter une ligne de commande de dossier partagé:
./VBoxManage sharedfolder add default -name win_share -hostpath "C:\docker\volumes"
Démarrer la machine virtuelle (interface de ligne de commande sans tête uniquement):
/VBoxManage startvm headless default
Se Connecter à ssh:
docker-machine ssh default
Créer le répertoire VM sharedfolder:
sudo mkdir /sharedcontent
Monter le dossier Windows sur la machine virtuelle hôte:
sudo mount -t vboxsf win_share /sharedcontent