65 votes

Exécution de Docker pour Windows, erreur lors de l'exposition des ports

Je suis conscient qu'il ya beaucoup de questions à propos de l'exécution de Docker sur windows, cependant, cette question est au sujet de l'exécution de la nouvelle marque de Docker pour Windows, sous Windows.
Dans mon cas, je suis avec Windows 10 Pro 64 bits. Selon le site, cette version devrait être pris en charge.
J'ai suivi un tutoriel que j'ai trouvé ici: https://prakhar.me/docker-curriculum/
J'ai aussi essayé de suivre le guide officiel de la course: https://docs.docker.com/docker-for-windows/

Dans les deux tutoriels je reçois le même message d'erreur lorsque vous essayez d'affecter un port en utilisant soit l' -P paramètre ou lorsque vous essayez de spécifier un port -p 8080:5000:

Dans le guide officiel je exécutez docker run -d -p 80:80 --name webserver nginx et obtenez:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: réponse d'Erreur de démon: pilote a échoué de programmation externe de la connectivité sur le point de terminaison du serveur (f9946544e4c6ad2dd9cb8cbccd251e4d48254e86562bd8e6da75c3bd42c7e45a): Erreur de démarrage du userland proxy: mkdir /port/tcp:0.0.0.0:80:tcp:172.17.0.2:80: erreur d'entrée/sortie.

En suivant le guide non officiel je exécutez docker run -p 8888:5000 prakhar1989/catnip et obtenez fondamentalement la même erreur:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: réponse d'Erreur de démon: pilote a échoué de programmation externe de la connectivité sur le point de terminaison focused_swartz (48a0c005779c6e89bf525ead2ecff44a7f092495cd22ef7d19973002963cb232): Erreur de démarrage du userland proxy: mkdir /port/tcp:0.0.0.0:8888:tcp:172.17.0.2:5000: erreur d'entrée/sortie.

Si je ne cherche pas à attribuer un port le conteneur va courir, mais alors je ne sais pas comment y accéder.

Le docker version je suis en cours d'exécution:

  • Docker version 1.12.3, construire 6b644ec`
  • docker-composer de la version 1.8.1, construire 004ddae`
  • docker-machine.exe la version 0.8.2, construire e18a919`

Toute aide serait très appréciée. Je vous remercie.

75voto

biscuit314 Points 522

Voici une nouvelle tournure.

Le dernier Windows 10 mise à jour (Automne Créateurs de mise à Jour, 2017) a une nouvelle "fonctionnalité". Il démarre automatiquement toutes les applications qui ont été en cours d'exécution lorsque vous dernier arrêt.

Cette reconstitue Docker pour Windows dans un mauvais état. Que, de ce fait, ces ports ont été en cours d'utilisation par quelque chose d'autre, c'était le fantôme de lui-même. Ceci explique pourquoi ces ports étaient encore en usage, même si j'ai arrêté d'/commencé mes conteneurs et même redémarrer!

La solution dans ce cas est de simplement redémarrer le Panneau de démon.

Pour éviter cela, après l'arrêt suivant, ne pas utiliser le bouton d'arrêt. Tapez ceci à la place:

shutdown /s /t 0

Cela contourne la nouvelle fonctionnalité.

Voir la réponse de Jason[MS] dans ce thread:

https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_perf-insiderplat_pc/programs-autostart-after-boot-in-windows-10-fall/09dd8d3e-7b36-45d1-9181-6587dd5d53ab

Voici un gars de la solution de contournement (à partir de la fin de ce thread n'ai pas essayé moi-même):

http://www.icttoolbox.nl/info/stop-windows-10-creator-fall-reopening-programs-reboot/

58voto

Phonolog Points 3162

Redémarrer le démon Docker résout ce problème temporairement, mais pour se débarrasser d'elle en fin de compte, j'ai dû désactiver Windows 10 démarrage rapide, qui est la fonction @biscuit314 décrit.

Pour désactiver Windows 10 démarrage rapide obtenir le Panneau de configuration > Options d'Alimentation > Choisir l'action des boutons d'alimentation > Modifier les paramètres actuellement non disponibles > Décochez la case Activer démarrage rapide (recommandé) et Enregistrer les modifications

Disable fast startup

13voto

Mrk Fldig Points 1131

Cela est dû à un conflit de numérotation des ports: problème de github ici https://github.com/docker/compose/issues/3277

Le port est essentiellement utilisé! La réinitialisation a fonctionné parce qu'elle a effacé d'autres mappages.

9voto

Soumya Boral Points 322

1) Arrêtez tous les conteneurs en cours d'exécution docker stop $(docker ps -a -q) puis

2) Arrêtez le Docker sur votre machine et redémarrez-le.

Exécutez ensuite la commande requise. Cela résoudra le problème.

1voto

Abhishek Jain Points 36

Utiliser le panneau d'arrêt $(docker ps -a-q) seulement quand vous savez que vous voulez arrêter tous les récipients ou pas.... Si oui, alors s'il vous plaît exécuter docker rm $(docker ps -a-q) pour enlever les conteneurs ....

Puis arrêter le démon docker - systemctl stop docker Puis démarrer le démon docker - systemctl start menu fixe

Vérifiez également que le panneau démon ou pas, - service de docker état

Après avoir suivi toutes au-dessus de la mention étapes, vous devriez être bien.....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X