web-dev-qa-db-fra.com

Essayez-vous de monter un répertoire sur un fichier (ou inversement)?

J'ai un menu fixe avec la version 17.06.0-ce. Quand j'essaye d'installer nginx en utilisant docker avec la commande:

docker run -p 80:80 -p 8080:8080 --name nginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx:latest

cela montre que 

docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "process_linux.go:339: container init caused \"rootfs_linux.go:57: mounting \\\"/appdata/nginx/conf/nginx.conf\\\" to rootfs \\\"/var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\\" at \\\"/var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0/etc/nginx/nginx.conf\\\" caused \\\"not a directory\\\"\""
: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified Host path exists and is the expected type.

Si vous ne montez pas le fichier nginx.conf, tout va bien. Alors, comment puis-je monter le fichier de configuration? 

Merci.

22
Steven Luo

Parce que docker reconnaît $PWD/conf/nginx.conf comme folder et non un fichier.
Vérifiez si le répertoire $PWD/conf/ ne contient pas nginx.conf en tant que répertoire.

Essayer avec 

> cat $PWD/conf/nginx.conf 
cat: nginx.conf/: Is a directory

Sinon, ouvrez un problème de Docker .
Cela fonctionne bien pour moi avec la même configuration.

9
user4912329

Si vous utilisez Docker pour Windows, cette erreur peut survenir si vous avez récemment modifié votre mot de passe.

Comment réparer:

  1. Assurez-vous d'abord de supprimer le volume du conteneur endommagé.
    docker rm -v <container_name>
  2. Ouvrir les paramètres du menu fixe
  3. Allez dans l'onglet "Shared Drives"
  4. Cliquez sur le lien "Réinitialiser les informations d'identification ..." en bas de la fenêtre.
  5. Re-partagez les lecteurs que vous souhaitez utiliser avec Docker
    • Vous devriez être invité à entrer votre nom d'utilisateur/mot de passe
  6. Cliquez sur "Appliquer"
  7. Allez dans l'onglet "Réinitialiser"
  8. Cliquez sur "Redémarrer Docker"
  9. Recréez vos conteneurs/volumes

Le crédit va à BaranOrnarli sur GitHub pour la solution.

66
Jesse Webb

Supprimez les volumes associés au conteneur. Recherchez le nom du conteneur à l'aide de docker ps -a, puis supprimez-le à l'aide de:

docker rm -v <container_name>

Problème:

L'erreur à laquelle vous faites face peut se produire si vous avez déjà essayé d'exécuter la commande docker run alors que le fichier n'était pas présent à l'emplacement où il aurait dû se trouver dans le répertoire de l'hôte. Dans ce cas, le démon docker aurait créé un répertoire dans un conteneur à sa place. Ce qui plus tard ne parvient pas à mapper vers le fichier approprié lorsque les fichiers corrects sont placés dans le répertoire de l'hôte et que le menu fixe est exécuté à nouveau.

Solution:

Supprimez les volumes associés au conteneur. Si vous n'êtes pas préoccupé par les autres volumes de conteneur, vous pouvez également utiliser:

docker volume rm $(docker volume ls -q)
9
Ayushya

pourriez-vous s'il vous plaît utiliser le chemin absolu/chemin complet à la place $ PWD/conf/nginx.conf .it fonctionnera 

EX:docker run --name nginx-container5 --rm  -v /home/sree/html/nginx.conf:/etc/nginx/nginx.conf -d -p 90:80 nginx
b9ead15988a93bf8593c013b6c27294d38a2a40f4ac75b1c1ee362de4723765b

root@sree-VirtualBox:/home/sree/html# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
b9ead15988a9        nginx               "nginx -g 'daemon of…"   7 seconds ago       Up 6 seconds        0.0.0.0:90->80/tcp   nginx-container5
e2b195a691a4        nginx               "/bin/bash"              16 minutes ago      Up 16 minutes       0.0.0.0:80->80/tcp   test-nginx
0

Je sais que cette question a été postée il y a longtemps, mais j'aimerais quand même dire comment j'ai résolu ce problème.

J'utilise Docker ToolBox pour Windows. Par défaut, C Drive est monté automatiquement. Par conséquent, pour monter les fichiers, assurez-vous que vos fichiers et dossiers se trouvent dans C DRIVE.

Exemple: C:\Users \% USERNAME%\Desktop 

0
Abhishek D K