web-dev-qa-db-fra.com

Erreur lors du démarrage du proxy utilisateur: Lier pour 0.0.0.0:80: erreur inattendue Autorisation refusée

J'exécute la dernière version de Docker CE, 17.09, sous Windows 10 Pro, et j'utilise deux exemples différents pour obtenir autorisation refusée.

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

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

les deux ont renvoyé la même erreur.

docker: réponse d'erreur du démon: échec du pilote de programmation de la connectivité externe sur le noeud final XXXXX: erreur de démarrage du proxy userland: liaison pour 0.0.0.0:80: inattendu error Autorisation refusée.

56
Alz

J'ai résolu mon problème sous Windows 10 Pro. Il s'est avéré que le service de publication World Wide Web était activé. Il m'a fallu un certain temps pour constater que, après avoir noté via netstat -a -n que j'avais un auditeur de: 80 quelque part/d'une manière ou d'une autre. Que je suis bête. Fermez-le et j'allais bien avec le port 80.

58
Alz

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, saisissons localhost: 8080 pour indiquer si la connexion aboutit dans le navigateur.

enter image description here

30
Alan Li

Le problème est que les ports à usage général comme 80, 443, 22, .. (en général, les ports <1024) sont protégés par le système. Vous devez donc disposer de privilèges pour les utiliser. , ici, il suffira d’être un administrateur système et d’exécuter une commande en tant qu’administrateur.

S'il ne doit pas nécessairement s'agir de :80 essayez d'utiliser un autre port, comme :8080, si cela ne résout pas le problème et que l'erreur ne change pas, le problème va plus loin.

14
trust512

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

Sudo apachectl stop

Avant d'exécuter cette commande, lancez

Sudo lsof -i -P | grep “LISTEN"

et vérifiez 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, c'est le Mac Apache qui est à l'origine du problème.

9
Oksana Romaniv

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 tel est le cas, vous pouvez arrêter le processus avec la commande suivante:

taskkill /PID [PID] /F

Cela va tuer le processus en utilisant ce port. Vous pourrez alors lier un nouveau processus au port.

J'ai aussi rencontré un moment où netstat -aon ne retournait pas qu'un processus était en cours d'exécution pour un port que je souhaitais utiliser, mais il était certain qu'un processus en cours d'exécution ne me permettait pas d'exécuter un nouveau processus. Le port. J'ai pu remédier au problème avec les éléments suivants:

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

Dans powershell/cmd, exécutez la commande suivante:

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

Cela réservera le port afin que, lorsque vous redémarrez en mode Windows normal, aucune application ne vole le port avant que vous puissiez l'utiliser.

6
cmpickle

J'ai eu cette erreur parce que le port était déjà utilisé. Changé sur un autre port et je n'ai plus reçu cette erreur.

4
ladookie

Le port est utilisé par Visual Studio sans débogage. Ferme ET puis rouvre.

2

Sous Windows 10 Pro, en exécutant la commande Docker à partir d'une fenêtre CMD avec En tant qu'administrateur, j'ai toujours les problèmes (conformément à @ mikael-chudinov ci-dessus). Je veux vraiment utiliser le port 80 pour que les autres réponses ne me conviennent pas.

S'il vous plaît voir ce post de blog par Jens à www.jens79.de

Depuis Powershell, lancez la commande:

Get-NetTCPConnection -LocalPort 80 | Format-List

Ceci pour moi a montré un processus unique avec pid = 4

Dans le Moniteur système, il s’agit du processus "Système", mais selon l’article susmentionné, il s’agit en réalité de IIS exécuté en tant que "Service de publication World Wide Web".

En supposant que vous n'avez pas besoin que IIS soit en cours d'exécution dans la console des services Windows, arrêtez et désactivez "Service de publication World Wide Web", puis réessayez.

1
markyk

Je suis récemment tombé sur ce problème en essayant de charger un environnement de menu fixe pour maintenir un ancien projet. Dans mon cas, l'instance par défaut d'Apache s'exécutait sur mon Mac après une mise à jour récente du système d'exploitation et devait être fermée avant que le port 80 ne soit disponible. Vous pouvez l'arrêter avec cette commande:

Sudo /usr/sbin/apachectl stop

Si le problème persiste, vous pouvez utiliser la commande suivante pour voir les PID de ce qui est en cours d'exécution sur un port donné (dans ce cas, 80):

lsof -t -i :80

Vous pouvez essayer d'arrêter tout ce qui est en cours d'exécution sur ces ports avec la commande kill; Assurez-vous simplement de ne rien tuer d'important!

kill $(lsof -t -i :80)

1
Brombardier

Cela m'a aidé. Le port mentionné dans le message d'erreur était en effet dans l'une des plages de ports réservées: Windows ne peut pas se lier au port supérieur à 4969

1
Gleb Samsonenko

J'ai aussi le même problème. Si un proxy est déjà installé sur votre système, le port du conteneur est entouré d'un proxy et vous devez utiliser un proxy pour exécuter le conteneur une fois. Vous n'aurez pas à le faire pour la prochaine fois. .

0
Jamal Kaksouri

Même problème, mon conteneur ne voulait tout simplement pas démarrer et afficher le message d'erreur suivant lorsque je tentais de démarrer le conteneur:

Réponse d'erreur du démon: le pilote n'a pas réussi à programmer la connectivité externe sur le noeud final ..... Erreur lors du démarrage du proxy utilisateur: Lier pour 0.0.0.0:1521: erreur inattendue Autorisation refusée.

avec la commande suivante pour démarrer un conteneur Oracle:

docker run -d -p 1521: 1521 ...

Pour moi, je pense que c'est le résultat d'une instance Oracle désinstallée qui n'est pas correctement désinstallée. Port encore utilisé ou quelque chose. Mais le simple changement de port a résolu le problème comme indiqué ci-dessous:

docker run -d -p 1523: 1521 ...

0
user7023213

Vérifiez si le nginx de la machine hôte est démarré et arrêtez-le.

Sudo service nginx stop

0
Anderson Couto

Le problème est que vous ne disposez pas de l'autorisation nécessaire pour exécuter l'image sur le port 80. Pour ce faire, ajoutez - user root dans la commande d'exécution de votre menu fixe. Cela fournira les privilèges root et il sera exécuté.

0
Mahesh Chandra