J'ai récemment mis à niveau ma Docker Toolbox sur Windows 10, et maintenant mes montages de volume ne fonctionnent plus. J'ai tout essayé. Voici le chemin de montage actuel:
volumes:
- C:\Users\Joey\Desktop\backend:/var/www/html
Je reçois une erreur de montage de liaison non valide.
Il semble que vous utilisiez un chemin absolu situé à l'intérieur de C:\Users
dir, cela n'a pas fonctionné pour moi aussi, si vous utilisez Docker-Toolbox
voir ci-dessous.
Transférer le ./
le chemin relatif dans la section volumes
sera automatiquement résolu par docker-compose
vers le répertoire contenant docker-compose.yml
fichier (par exemple, si votre projet est dans %UserProfile%/my-project
puis ./:/var/www/html
obtient /c/Users/my-name/my-project:/var/www/html
).
Le problème est qu'actuellement (en utilisant DockerToolbox-19.03.1
) seulement le /c/Users
le répertoire est partagé avec la machine virtuelle (la boîte à outils place docker
elle-même dans la machine virtuelle, ce qui signifie qu'elle n'a pas accès à votre système de fichiers, sauf les répertoires partagés montés).
Donc, en gros, placez votre projet là-bas (C:\Users\YOUR_USER_NAME
) devrait faire ./
travail. Mais même cela n'a pas fonctionné pour moi, et nous nous sommes retrouvés avec ci-dessous _prepare.sh
script:
#!/bin/bash
VBoxManage='/c/Program Files/Oracle/VirtualBox/VBoxManage'
# Defines variables for later use.
ROOT=$(dirname $0)
ROOT=$(cd "$ROOT"; pwd)
MACHINE=default
PROJECT_KEY=shared-${ROOT##*/}
# Prepares machine (without calling "docker-machine stop" command).
#
if [ $(docker-machine status $MACHINE 2> /dev/null) = 'Running' ]; then
echo Unmounting volume: $ROOT
docker-compose down
docker-machine ssh $MACHINE <<< '
Sudo umount "'$ROOT'";
'
"$VBoxManage" sharedfolder remove $MACHINE --name "$PROJECT_KEY" -transient > /dev/null 2>&1
else
docker-machine start $MACHINE
fi
eval $(docker-machine env $MACHINE)
set -euxo pipefail
"$VBoxManage" sharedfolder add $MACHINE --name "$PROJECT_KEY" --hostpath "$ROOT" -automount -transient
docker-machine ssh $MACHINE <<< '
echo Mounting volume: '$ROOT';
Sudo mkdir -p "'$ROOT'";
Sudo mount -t vboxsf -o uid=1000,gid=50 "'$PROJECT_KEY'" "'$ROOT'";
'
docker-compose up -d
docker-machine ssh $MACHINE
bash
tilisation:
docker-compose.yml
fichier.C:\Users
dir).Remarque:
docker-compose
étant requis.docker system Prune
pour libérer de l'espace disque (ou simplement ajouter docker system Prune --force
au script ci-dessus, sur une nouvelle ligne juste après la commande mount
).J'ai rencontré le même problème (j'utilise Docker Desktop).
Mes pas étaient:
1) Placez votre dossier sous le lecteur "C"
2) Ouvrez "Paramètres" dans Docker Desktop -> "Lecteurs partagés" -> "Réinitialiser les informations d'identification" -> sélectionnez le lecteur "C" -> "Appliquer"
3) Ouvrez le terminal et exécutez (comme proposé par Docker Desktop):docker run --rm -v c:/Users:/data Alpine ls /data
4) Ouvrez votre docker-compose.yml
et chemin de mise à jour dans -volumes
:
volumes:
- /data/YOUR_USERNAME/projects/my_project/jssecacerts:/usr/lib/jvm/Java-1.8-openjdk/jre/lib/security/jssecacerts/
5) Redémarrez le conteneur Docker
Est-ce la section des services? Vous en avez maintenant besoin dans la section volume, donc si vous l'aviez, supprimez-le.