Docker sur Windows 10 «Le pilote n'a pas réussi à programmer la connectivité externe sur le point de terminaison»

134

J'essaye d'utiliser $ docker-compose up -d pour un projet et je reçois ce message d'erreur:

ERREUR: pour l'api ne peut pas démarrer le service api: le pilote n'a pas réussi à programmer la connectivité externe sur le point de terminaison dataexploration_api_1 (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): Erreur lors du démarrage du proxy userland: mkdir /port/port.0:80: Erreur lors du démarrage du proxy userland: mkdir /port/port.0:80 Des erreurs rencontrées lors de la mise en place du projet.

Je me demande si c'est peut-être le port? J'avais essayé le port 8080 auparavant. Le projet a été initialement configuré sur un mac et j'ai cloné le référentiel à partir de gitHub.

Sockness_Rogers
la source
Veuillez ajouter un lien vers le ticket github afin que nous puissions tous aller là-bas et voter pour.
PussInBoots

Réponses:

270

J'ai reçu le même message d'erreur sur mon Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 en utilisant Windows Powershell x86 en mode administrateur.

La solution consistait simplement à redémarrer Docker.

Jens Christian Eldøy
la source
J'utilise Docker Version 18.03.0-ce-win59 (16762) sur Windows 10 Professionnel. L'image Docker est jenkins / jenkins: 2.107.2. Après avoir tiré, j'utilise cette commande pour installer docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Après avoir configuré jenkins, j'utilise docker stop myJenkinsdans une autre fenêtre de commande et j'arrête mon hôte Windows 10. Lorsque je démarre Windows 10 qui démarre automatiquement le docker, j'utilise la commande docker start myJenkinset j'obtiens le message familier. Cependant, le redémarrage de docker résout le problème :)
Charles Wu
1
Est-ce que quelqu'un sait pourquoi cela se produit? Le redémarrage de docker semble piraté, existe-t-il un moyen de résoudre ce problème correctement?
Storm Muller
Le même correctif a fonctionné pour moi en mars 2019. Utilisation de Docker Desktop Version 2.0.0.3 (31259) Canal: stable Build: 8858db3 Client: Docker Engine - Version communautaire: 18.09.2 Version API: 1.39 Version Go: go1.10.8 Git commit: 6247962 Construit: Dim 10 février 04:12:31 2019 OS / Arch: windows / amd64 Expérimental: false Win 10 Version 10.0.18346.1 (version rapide de la pré-version)
JohnC
eu le même problème sur un Mac et le redémarrage du docker l'a également corrigé ... jésus, j'aurais dû vérifier votre réponse avant de réinstaller tout l'environnement de docker localement ....: D
bravo
67

Si cela se produit une fois, le redémarrage de Docker fera le travail. Dans mon cas, cela se produisait à chaque fois que je redémarrais mon ordinateur.

Dans ce cas, désactivez le démarrage rapide , ou vous redémarrerez probablement Docker à chaque démarrage de votre ordinateur. Cette solution a été obtenue à partir d' ici

grignoter
la source
6
Cela devrait être accepté comme une réponse. Redémarrer fonctionne mais quand vous devez le faire à chaque fois que cela devient ennuyeux
Vitalii
J'ai eu cette erreur lors du changement d'utilisateur sur Windows 10
Vasko
58

Le simple fait de redémarrer Docker n'a pas résolu le problème pour moi sous Windows 10.

Dans mon cas, j'ai résolu le problème avec les étapes exactes ci-dessous:

1) Fermez "Docker Desktop"

2) Exécutez les commandes ci-dessous:

net stop com.docker.service
net start com.docker.service

3) Lancez à nouveau "Docker Desktop"

J'espère que cela aidera quelqu'un d'autre.

Mohammed Réda OUASSINI
la source
3
Cela fonctionne pour moi après avoir essayé juste un redémarrage du docker! N'oubliez pas non plus d'exécuter ce couple avec des privilèges d'administrateur
Gad Wissberg
Cela a fonctionné, mais je n'ai pas de privilège d'administrateur tout le temps :(
Hassan Tareq
3
Cela a fonctionné pour moi en redémarrant le service docker, généralement juste un redémarrage du bureau docker était suffisant mais pas cette fois ... docker sur Windows 10 est vraiment douloureux (latences, bugs, doc, ...)
a11r
Cela a fonctionné! Devrait être la vraie réponse acceptée. Merci
Dominik K
A travaillé pour moi, thnx!
G.Mast
9

J'ai aussi cette erreur, si vous voulez connaître la principale raison pour laquelle l'erreur se produit, c'est parce que docker exécute déjà un conteneur similaire, pour résoudre le problème (éviter de redémarrer Docker), vous devez:

docker container ls

Vous avez quelque chose de similaire à:

CONTAINER ID        IMAGE               COMMAND             CREATED
1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago

Ceci est une liste des conteneurs en cours d'exécution, prenez l'ID DU CONTAINER (copie Ctrl+C )

Vous devez maintenant terminer le processus (et laisser exécuter une autre image) exécuter cette commande.

docker container stop <CONTAINER_ID>

Et c'est tout! Vous pouvez maintenant créer le conteneur.

Pour plus d'informations, visitez https://docs.docker.com/get-started/part2/

Andres Rodriguez
la source
7

Je sais qu'il y a déjà beaucoup de réponses, mais aucune n'a résolu le problème pour moi.
Au lieu de cela, je me suis débarrassé de ce message d'erreur en réinitialisant le docker aux paramètres d'usine par défaut :

entrez la description de l'image ici

jasie
la source
Avez-vous eu un rapport d'erreur de Docker avant de le faire, car dans mon cas, quelque chose comme une erreur apparaît avec la suggestion de réinitialiser les paramètres d'usine par défaut.
Theodosios Asvestopoulos
Non, @TheodosiosAsvestopoulos, je n'ai pas eu ce pop-up.
jasie
Étrange j'ai eu le même problème aujourd'hui, le redémarrage du docker n'a pas aidé. Je ne voulais pas réinitialiser les paramètres d'usine par défaut, car nous tirons de très grandes images.Je viens donc de quitter Docker Desktop et de l'ouvrir à nouveau et cela a fonctionné (cela semble être une action différente de celle de simplement le redémarrer).
Theodosios Asvestopoulos
6

Normalement, cette erreur se produit lorsque vous essayez de démarrer un conteneur mais que les ports dont le conteneur a besoin sont occupés, généralement par le même Docker comme le résultat d'un dernier processus incorrect à arrêter.

Pour moi, la solution est:

  1. Ouvrez Windows CMD comme administrateur, tapez netstat -oanpour trouver le processus (Docker est ce processus) qui se produit sur votre port:

Dans mon cas, mes ports docker sont 3306 6001 8000 9001.

  1. Maintenant, nous avons besoin de ports libres, nous allons donc tuer ce processus par PID (colum PID), tapez

    TASKKILL /PID 9816 /F
    
  2. Redémarrez le docker.

  3. Soyez heureux.

Cordialement.

Jhon Didier Sotto
la source
2

Dans mon cas, le problème était que le conteneur docker (Nginx) utilise le port 80 et IIS utilise le même. La configuration d'un autre port dans IIS résout le problème

Артур Камильянов
la source
1

Dans la plupart des cas, le premier cas auquel vous devriez penser est qu'un ancien service est en cours d'exécution et utilise ce port. Dans mon cas, puisque je change le nom de l'image, alors lorsque vous utilisez docker-compose pour arrêter (puis monter), cela n'arrêtera pas l'ancien conteneur (service), conduisant au nouveau conteneur ne peut pas être démarré.

Phuoc Quach ngoc
la source
0

Une réponse un peu tardive, mais je la laisserai ici, cela pourrait aider quelqu'un d'autre Sur un Mac Mojave après de nombreux redémarrages de mac et de docker, j'ai dû le faire sudo apachectl stop.

Tarek
la source
0
  • Le moyen le plus simple de résoudre ce problème consiste à redémarrer le docker. Mais dans certains cas, cela peut ne pas fonctionner même si vous n'avez aucun conteneur en cours d'exécution dans le port.Vous pouvez vérifier les conteneurs en cours d'exécution à l'aide de la docker pscommande et voir tous les conteneurs qui n'ont pas été effacés mais qui ont été fermés avant d'utiliser la docker ps -acommande.

Imaginez qu'il y ait un conteneur qui a l'ID de conteneur. 8e35276e845eVous pouvez utiliser la commande docker rm 8e35276e845eou docker rm 8e3pour terminer le conteneur. Notez que les 3 premières chaînes sont l'ID de cet ID de conteneur Docker particulier. Ainsi, selon le scénario ci-dessus, 8e3 est l'identifiant de 8e35276e845e .

  • Si le redémarrage ne fonctionne pas, vous pouvez essayer de changer les ports des services dans le fichier docker-compose.yml et selon le port apache, vous devez changer le port du v-host (s'il y en a). problème.

Ex:

    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8082:80
    depends_on:
      - mysql_db

devrait être changé en

apache_server:
    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8083:80
    depends_on:
      - mysql_db

et le v-host particulier doit également être changé,

Ex (selon le scénario ci-dessus):

<VirtualHost *:80> 
    ProxyPreserveHost On
    ServerAlias phpadocker.lk
    ProxyPass / http://localhost:8083/
    ProxyPassReverse / http://localhost:8083/
</VirtualHost>

Cela vous aidera à résoudre le problème ci-dessus.

Hirumina
la source
0

Pour de nombreux utilisateurs de Windows qui ont le même problème, je suggérerais de redémarrer l'ordinateur également, car la plupart du temps (pour moi du moins) le redémarrage de Docker ne fonctionne pas. Donc, je vous suggère de suivre les étapes suivantes:

  1. Redémarrez votre ordinateur.
  2. Ensuite, démarrez votre PowerShell en tant qu'administrateur et exécutez ceci:

    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

  3. Après cela, redémarrez votre Docker.

Après avoir terminé ces étapes, vous pourrez exécuter sans problèmes. J'espère que cela aide.

Donald Shahini
la source