J'ai un docker avec la version 17.06.0-ce
. Lorsque j'essaie d'installer NGINX à l'aide de 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: réponse d'erreur du démon: erreur d'exécution oci: container_linux.go: 262: démarrage du processus de conteneur causé "process_linux.go: 339: conteneur init causé \" rootfs_linux.go: 57: montage \\ "/ appdata / nginx / conf / nginx.conf \\ "\\ "à rootfs / var / lib / docker / aufs / mnt / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 \\" à \\" / var / lib / docker / aufs / mnt / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 / etc / nginx / nginx.conf \\ "a causé \\" pas un répertoire \\ "\" ": essayez-vous de monter un répertoire sur un fichier (ou vice-versa)? Vérifiez si le chemin d'hôte spécifié existe et est du type attendu.
Si vous ne montez pas le nginx.conf
fichier, tout va bien. Alors, comment puis-je monter le fichier de configuration?
ls -al .
? Je veux voir à quoi ressemble ton pwd.docker rm …
), puis le recréer.Réponses:
Parce que docker reconnaîtra
$PWD/conf/nginx.conf
comme un dossier et non comme un fichier. Vérifiez si le$PWD/conf/
répertoire contientnginx.conf
comme répertoire .Tester avec
Sinon, ouvrez un problème Docker .
Cela fonctionne bien pour moi avec la même configuration.
la source
-v
nginx.conf
existait déjà auparavant sur ce chemin, Linux le reconnaîtrait comme un fichier, non?Cela ne devrait plus arriver (depuis la v2.2.0.0), voir ici
Si vous utilisez Docker pour Windows , cette erreur peut se produire si vous avez récemment modifié votre mot de passe.
Comment réparer:
docker rm -v <container_name>
.
Le mérite revient à BaranOrnarli sur GitHub pour la solution.
la source
TL; DR : Supprimez les volumes associés au conteneur.
Recherchez le nom du conteneur en utilisant,
docker ps -a
puis supprimez ce conteneur en utilisant:Problème:
L'erreur à laquelle vous faites face peut se produire si vous avez précédemment essayé d'exécuter la
docker run
commande alors que le fichier n'était pas présent à l'emplacement où il aurait dû se trouver dans le répertoire hôte.Dans ce cas, le démon docker aurait créé un répertoire à l'intérieur du conteneur à sa place, qui échoue plus tard à mapper vers le fichier approprié lorsque les fichiers corrects sont placés dans le répertoire hôte et que la commande docker est réexécutée.
Solution:
Supprimez les volumes associés au conteneur. Si vous n'êtes pas préoccupé par les autres volumes de conteneurs, vous pouvez également utiliser:
la source
docker volume
commande / interface est uniquement pour les volumes anonymes et nommés, qui ne font pas partie de la question d'origine./var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\\"
Ma déduction: il a déjà un dossier en raison d'une exécution précédente, donc si vous essayez de mapper un fichier à ce dossier, il échouerait.Réponse pour les utilisateurs de Docker Toolbox
Il y a eu au moins 3 réponses ici touchant au problème, mais ne l'expliquant pas correctement et ne donnant pas une solution complète. C'est juste un problème de montage de dossier .
Description du problème:
Docker Toolbox contourne l'exigence Hyper-V de Docker en créant une machine virtuelle (dans VirtualBox, qui est fourni). Docker est installé et exécuté à l'intérieur de la machine virtuelle. Pour que Docker fonctionne correctement, il doit avoir accès au à partir de la machine hôte. Ce qui n'est pas le cas ici.
Après avoir installé Docker Toolbox, il a créé la VM VirtualBox et monté uniquement sur
C:\Users
la machine, en tant que\c\Users\
. Mon projet étaitC:\projects
donc nulle part sur le volume monté. Lorsque j'envoyais le chemin vers la VM, il n'existerait pas, car ilC:\projects
n'est pas monté. Par conséquent, l'erreur ci-dessus.Disons que mon projet contient ma configuration ngnix
C:/projects/project_name/
Réparer:
Allez dans VirtualBox, faites un clic droit sur Default (la VM de Docker)> Paramètres> Dossiers partagés
En cliquant sur la petite icône avec le plus sur le côté droit, ajoutez un nouveau partage. J'ai utilisé les paramètres suivants:
C:\projects
à/projects
(ROOT/projects
) dans la machine virtuelle, ce qui signifie que vous pouvez maintenant faire référence à tout chemin dans des projets comme celui - ci:/projects/project_name
- en raisonproject_name
deC:\projects\project_name
est maintenant monté.Dans mon fichier docker, je fais maintenant référence
nginx.conf
à ceci:Où nginx.conf réside réellement dans
C:\projects\project_name\docker_config\nginx\nginx.conf
la source
L'explication donnée par @Ayushya était la raison pour laquelle j'ai frappé ce message d'erreur quelque peu déroutant et le ménage nécessaire peut être fait facilement comme ceci:
la source
J'ai eu le même problème. J'utilisais Docker Desktop avec WSL dans Windows 10 17.09.
Cause du problème:
Le problème est que Docker pour Windows s'attend à ce que vous fournissiez vos chemins de volume dans un format qui correspond à ceci:
/c/Users/username/app
MAIS, WSL utilise à la place le format:
/mnt/c/Users/username/app
C'est déroutant car lors de la vérification du fichier dans la console, je l'ai vu, et pour moi tout était correct. Je n'étais pas au courant des attentes de Docker pour Windows concernant les chemins de volume .
Solution au problème:
J'ai lié les points de montage personnalisés pour corriger les différences entre Docker pour Windows et WSL:
sudo mount --bind /mnt/c /c
Comme suggéré dans ce guide étonnant: Configurer Docker pour Windows et WSL pour fonctionner parfaitement et tout fonctionne parfaitement maintenant.
Avant de commencer à utiliser WSL, j'utilisais Git Bash et j'avais également ce problème.
la source
J'utilise Docker ToolBox pour Windows. Par défaut, C Drive est monté automatiquement, donc pour monter les fichiers, assurez-vous que vos fichiers et dossiers sont à l'intérieur de C DRIVE .
Exemple:
C:\Users\%USERNAME%\Desktop
la source
Peut-être que quelqu'un trouve cela utile. Mon fichier de composition avait le volume suivant monté
Comme ./file n'existait pas, il a été monté dans ABC (par défaut en tant que dossier).
Dans mon cas, j'ai eu un conteneur résultant de
Lorsque j'ai créé plus tard ./file et que
docker-compose up
j'ai couru , j'ai eu l'erreur:Le conteneur mis en place à partir de s'est
cool_image
souvenu qu'il/dir/file
s'agissait d'un répertoire et il était en conflit avec récemment créé et monté./file
.La solution était:
la source
Dans Windows 10, j'obtiens simplement cette erreur sans rien changer dans mon
docker-compose.yml
fichier ou dans la configuration de Docker en général.Dans mon cas, j'utilisais un VPN avec une politique de pare-feu qui bloque le port 445.
Après la déconnexion du VPN, le problème disparaît.
Je vous recommande donc de vérifier votre pare-feu et de ne pas utiliser de proxy ou de VPN lors de l'exécution de Docker Desktop.
Consultez Docker pour Windows - Règles de pare-feu pour les lecteurs partagés pour plus de détails.
J'espère que cela aidera quelqu'un d'autre.
la source
Pourriez-vous s'il vous plaît utiliser le chemin absolu / complet au lieu de
$PWD/conf/nginx.conf
? Ensuite, cela 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
la source
J'ai rencontré le même problème en utilisant Docker sur WSL1 sur Windows 10 avec cette ligne de commande:
Je l'ai résolu en changeant le chemin du fichier sur le système hôte en un chemin absolu de style UNIX:
ou en utilisant un chemin absolu de style Windows avec
/
au lieu de\
comme séparateurs de chemin:la source
La mise à jour de Virtual Box vers la version 6.0.10 a résolu ce problème pour Docker Toolbox
https://github.com/docker/toolbox/issues/844
Je rencontrais ce genre d'erreur:
Après la mise à jour de VitualBox, toutes les commandes fonctionnaient très bien 🎉
la source
J'avais la même égratignure parce que je n'avais pas le fichier localement, donc il l'a créé en tant que dossier.
la source
J'ai eu une erreur similaire sur niginx dans l'environnement Mac. Docker n'a pas reconnu correctement le fichier default.conf. Une fois le chemin relatif du chemin absolu modifié, l'erreur a été corrigée.
la source
Pour moi, cela n'a pas fonctionné:
Mais cela fonctionne bien (évidemment déplacé mon fichier de configuration dans un nouveau répertoire aussi:
la source
Je vais partager mon cas ici car cela peut faire gagner beaucoup de temps à quelqu'un d'autre à l'avenir.
J'avais un docker-compose parfaitement fonctionnel sur mon macos, jusqu'à ce que je commence à utiliser docker-in-docker dans Gitlab CI. Je n'ai eu que l'autorisation de travailler en tant que maître dans un référentiel, et le Gitlab CI est auto-hébergé et configuré par quelqu'un d'autre et aucune autre information n'a été partagée, sur la façon dont il est configuré, etc.
Ce qui suit a causé le problème:
Ce n'est que lorsque j'ai remarqué que cela pouvait fonctionner sous Windows (des heures à gratter la tête), j'ai essayé de renommer le wodpress.conf en default.conf et de définir simplement les chemins du répertoire:
Cela a résolu le problème!
la source
J'ai eu ce problème sous Windows 7 car mon fichier docker se trouvait sur un lecteur différent.
Voici ce que j'ai fait pour résoudre le problème:
À ce stade,
docker-compose up
devrait fonctionner.la source
J'ai eu la même erreur sur Windows10 après une mise à jour de Docker: 2.3.0.2 (45183).
J'utilisais des chemins absolus comme celui-ci
//C/workspace/nginx/nginx.conf
et tout fonctionnait comme un charme.La mise à jour a cassé mon docker-compose, et j'ai dû changer les chemins en
/C/workspace/nginx/nginx.conf
avec un seul/
pour la racine.la source
Notez que cette situation se produira également si vous essayez de monter un volume à partir de l'hôte qui n'a pas été ajouté à la section Ressources> Partage de fichiers des Préférences Docker.
L'ajout du chemin racine en tant que ressource de partage de fichiers permettra désormais à Docker d'accéder à la ressource pour la monter sur le conteneur. Notez que vous devrez peut-être effacer le contenu de votre conteneur Docker pour tenter de remonter le volume.
Par exemple, si votre application se trouve à
/mysites/myapp
, vous souhaiterez l'ajouter/mysites
comme emplacement des ressources de partage de fichiers.la source
J'ai eu le même problème, docker-compose créait un répertoire au lieu d'un fichier, puis se plantait à mi-chemin.
Ce que j'ai fait:
Exécutez le conteneur sans aucun mappage.
Copiez le
.conf
fichier dans l'emplacement hôte:docker cp containername:/etc/nginx/nginx.conf ./nginx.conf
Retirez le conteneur (
docker-compose down
).Remettez le mappage.
Remontez le conteneur.
Docker Compose trouvera le
.conf
fichier et le mappera , au lieu d'essayer de créer un répertoire .la source
J'ai résolu le problème de montage. J'utilise un environnement Win 7 et le même problème m'est arrivé.
Le conteneur a un répertoire de synchronisation par défaut à
C:\Users\
, j'ai donc déplacé mon projet versC:\Users\
, puis recréé le projet. Maintenant ça marche.la source