60 votes

Erreur de démarrage du proxy userland : Bind pour 0.0.0.0:80 : erreur inattendue Permission refusée

J'utilise la dernière version de Docker CE, 17.09, sous Windows 10 Pro, et en utilisant deux exemples différents, j'obtiens les résultats suivants Permission refusée .

Exemple de site Docker : docker run -d -p 80:80 --name webserver nginx

Exemple de site AWS Docker : docker run -p 80:80 hello-world

ont tous deux retourné la même erreur.

docker : Réponse d'erreur du démon : échec de la programmation de la connectivité externe du pilote sur le point de terminaison XXXXX : Error starting userland proxy : Bind for 0.0.0.0:80 : unexpected error Permission refusée.

64voto

Alz Points 51

J'ai résolu mon problème sur Windows 10 Pro, il s'est avéré que le service de publication du World Wide Web était activé d'une manière ou d'une autre. Ça m'a pris un moment pour trouver ça, après avoir remarqué via netstat -a -n que j'avais un auditeur de 80 ans quelque part/quelque part. J'ai été stupide. Je l'ai fermé, et j'étais bien avec le port 80.

34voto

Alan Li Points 301

Changez le port en utilisant ces commandes comme suit :

docker container ls //show the container infos, note the ports info.

docker stop webserver

docker rm webserver  //shut down currently webserver

docker run -d -p 8080:80 --name webserver nginx (or 8000:80)

Enfin, entrons localhost:8080 pour montrer si la connexion est réussie dans le navigateur.

enter image description here

14voto

trust512 Points 1119

Le problème est que les ports à usage général comme 80 , 443 , 22 (dans les ports généraux < 1024 ) sont protégés par le système et vous devez donc avoir des privilèges pour les utiliser, ici il suffit d'être un administrateur système et d'exécuter la commande en tant qu'administrateur.

Si ça n'a pas à l'être :80 essayez d'utiliser un autre port, comme :8080 Si cela n'aide pas et que l'erreur ne change pas, le problème est plus profond.

11voto

Oksana Romaniv Points 492

Sur macOS Mojave Version 10.14.2, cette commande a fonctionné pour moi :

sudo apachectl stop

Avant d'exécuter cette commande, exécutez

sudo lsof -i -P | grep “LISTEN"

et vérifier si httpd est l'identifiant de l'écouteur sur :80 Par exemple :

the second line is httpd listener on port :80

Si c'est le cas, alors c'est en fait le Mac apache qui cause le problème.

6voto

cmpickle Points 382

La première chose à faire est d'exécuter la commande :

netstat -aon | findstr [port#]

Cela vous indiquera si un processus est en cours d'exécution sur le port donné. Si c'est le cas, vous pouvez tuer le processus avec la commande :

taskkill /PID [PID] /F

Cela va tuer le processus qui utilise ce port. Vous pourrez alors lier un nouveau processus à ce port.

Je suis aussi tombé sur un moment où netstat -aon n'a pas retourné qu'un processus était en cours d'exécution pour un port que je souhaitais utiliser mais il y avait certainement un processus en cours d'exécution sur ce port et il ne me permettait pas d'exécuter un nouveau processus sur ce port. J'ai pu remédier au problème en procédant comme suit :

Démarrer Windows en mode sans échec avec mise en réseau

Dans powershell/cmd exécuter la commande :

netsh int ipv4 add excludedportrange protocol=tcp startport=[PORT] numberofports=1

Ceci réservera le port de sorte que lorsque vous redémarrez en mode normal de Windows, aucune application ne volera le port avant que vous puissiez l'utiliser.

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