web-dev-qa-db-fra.com

Docker sur Windows 10 "Le pilote n'a pas réussi à programmer la connectivité externe sur le système d'extrémité"

J'essaie d'utiliser $ docker-compose up -d pour un projet et j'obtiens le message d'erreur suivant:

ERREUR: pour api Impossible de démarrer le service api: échec de la programmation de la connectivité externe sur le poste client Erreurs rencontrées lors de la mise en place du projet.

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

Merci d'avance!

57
Sockness_Rogers

J'ai 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.

134

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 Fast Startup , ou vous redémarrerez probablement Docker à chaque démarrage de votre ordinateur. Cette solution a été obtenue à partir de ici

36
chomp

Restaring Docker ne résout pas le problème sous Windows 10.

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

1) Fermer "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.

10

J'ai aussi cette erreur, si vous voulez connaître la raison principale de l'erreur, 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 CONTAINER (copie Ctrl+C)

Maintenant, vous devez mettre fin au processus (et laisser exécuter une autre image), lancer cette commande.

docker container stop <CONTAINER_ID>

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

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

4
Andres Rodriguez

Une réponse un peu tardive, mais je la laisserai ici, cela pourrait aider quelqu'un d'autre. Sur un mojave Mac après de nombreux redémarrages de Mac et de Docker, je devais Sudo apachectl stop.

0
Tarek
  • Le moyen le plus simple de résoudre ce problème consiste à redémarrer le menu fixe. Mais dans certains cas, cela peut ne pas fonctionner même si aucun conteneur n’est en cours d’exécution dans le port.Vous pouvez vérifier les conteneurs en cours d’exécution à l’aide de la commande docker ps et voir tous les conteneurs non effacés, mais sortis auparavant. en utilisant la commande docker ps -a.

Imaginez qu’un conteneur porte l’identifiant de conteneur 8e35276e845e. Vous pouvez utiliser la commande docker rm 8e35276e845e ou docker rm 8e3 pour terminer le conteneur .Notez que les 3 premières chaînes sont l’id Ainsi, selon le scénario ci-dessus 8e3 est l'id 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 en fonction du port Apache, vous devez changer le port du v-Host (s'il y a lieu). tout). Cela résoudra votre problème.

Ex: Apache_server: 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.

0
Hirumina

Dans mon cas, le problème était que le conteneur de menu fixe (Nginx) utilise le port 80 et que IIS utilise le même. Configuration d'un autre port dans IIS résoudre le problème