web-dev-qa-db-ja.com

ユーザーランドプロキシの起動エラー:0.0.0.0:80のバインド:予期しないエラー許可が拒否されました

Windows 10 Proで最新のDocker CE、17.09を実行しており、2つの異なる例を使用してPermission deniedを取得しています。

Dockerサイトの例:docker run -d -p 80:80 --name webserver nginx

AWSサイトDockerの例:docker run -p 80:80 hello-world

両方が同じエラーを返しました。

docker:デーモンからのエラー応答:ドライバーはエンドポイントの外部接続のプログラミングに失敗しましたXXXXX:ユーザーランドプロキシの起動エラー:0.0.0.0:80のバインド:予期しないエラー許可が拒否されました。

56
Alz

Windows 10 Proで問題を解決したところ、World Wide Web Publishing Serviceが何らかの形で有効になっていたことがわかりました。 netstat -a -nを介して、どこか/何らかの方法で:80のリスナーがいることに気づいた後、それを見つけるのにしばらくかかりました。愚かな私。シャットダウンして、ポート80で問題ありませんでした。

58
Alz

次のコマンドを使用してポートを変更します。

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)

最後に、localhost:8080を入力して、ブラウザーで接続が成功したかどうかを示します。

enter image description here

30
Alan Li

問題は、8044322、..(一般的なポート<1024)のような汎用ポートはシステム保護されているため、使用するには特権が必要ですここでは、システム管理者になり、管理者としてコマンドを実行するだけで十分です。

:80である必要がない場合は、:8080などの他のポートを使用してみてください。それでも解決せず、エラーが変わらない場合は、問題はさらに深くなります。

14
trust512

MacOS Mojaveバージョン10.14.2では、このコマンドが機能しました:

Sudo apachectl stop

このコマンドを実行する前に、実行します

Sudo lsof -i -P | grep “LISTEN"

httpd:80のリスナーの識別子かどうかを確認します。例:

the second line is httpd listener on port :80

存在する場合、問題の原因は実際にはMac Apacheです。

9
Oksana Romaniv

実行すべき最初のアクションは、コマンドを実行することです。

netstat -aon | findstr [port#]

これにより、特定のポートでプロセスが実行されているかどうかがわかります。その場合は、次のコマンドでプロセスを強制終了できます。

taskkill /PID [PID] /F

これにより、そのポートを使用するプロセスが強制終了されます。その後、新しいプロセスをポートにバインドできます。

また、使用したいポートでプロセスが実行されているというnetstat -aonが返されなかったが、その上でプロセスが実行されていたため、新しいプロセスを実行できないポート。次の問題を解決できました。

ネットワークを使用してWindowsをセーフモードで起動する

Powershell/cmdで次のコマンドを実行します。

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

これによりポートが予約されるため、通常のWindowsモードで起動したときに、使用する前にアプリケーションがポートを盗むことはありません。

6
cmpickle

このエラーが発生した理由は、ポートがすでに使用されていたためです。別のポートに変更すると、このエラーは表示されなくなりました。

4
ladookie

ポートはデバッグなしでVisual Studioで使用されています。閉じてから再度開きます。

管理者としてCMDウィンドウからDockerコマンドを実行しているWindows 10 Proでは、まだ問題があります(上記の@ mikael-chudinovによる)。私は本当にポート80を使いたいので、他の答えは私には向いていません。

www.jens79.de のJensによるこのブログ投稿を参照してください。

PowerShellから、次のコマンドを実行します。

Get-NetTCPConnection -LocalPort 80 | Format-List

これは、pid = 4の単一プロセスを示しています

システムモニターでは、これは「システム」プロセスですが、上記の記事によると、実際には「World Wide Web Publishing Service」としてIIS実行されています。

IISを実行する必要がないと仮定して、Windowsサービスコンソールで「World Wide Web発行サービス」を停止して無効にしてから、もう一度試してください。

1
markyk

古いプロジェクトを維持するためにドッカー環境をロードしようとしたときに、最近この問題に遭遇しました。私の場合、Apacheのデフォルトのインスタンスは、最近のOSの更新後にMacで実行されていたため、ポート80が使用可能になる前にシャットダウンする必要がありました。次のコマンドでシャットダウンできます:

Sudo /usr/sbin/apachectl stop

それでも問題が解決しない場合は、次のコマンドを使用して、特定のポート(この場合は80)で実行されているもののPIDを確認できます。

lsof -t -i :80

Killコマンドを使用して、これらのポートで実行されているものをすべてシャットダウンしようとすることができます。重要なものを殺さないように気をつけてください!

kill $(lsof -t -i :80)

1
Brombardier

これは私を助けました。エラーメッセージに記載されているポートは、実際には予約済みのポート範囲のいずれかにあります。 Windowsは49690を超えるポートにバインドできません

1
Gleb Samsonenko

私も同じ問題を抱えています。 proxyがシステムに既にインストールされている場合、コンテナポートはプロキシに囲まれ、プロキシを使用してコンテナを1回実行する必要があり、次回はこれを行う必要はありません。 。

0
Jamal Kaksouri

同じ問題が発生した場合、コンテナを起動しようとすると、コンテナが起動せず、次のエラーメッセージが表示されます。

デーモンからのエラー応答:ドライバーはエンドポイントの外部接続のプログラミングに失敗しました.....ユーザーランドプロキシの起動エラー:0.0.0.0:1521のバインド:予期しないエラーPermission denied。

oracleコンテナを起動する次のコマンドを使用します。

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

私にとっては、適切にアンインストールされていないアンインストールされたOracleインスタンスの結果だと思います。まだ使用されているポートか何か。しかし、別のポートに変更するだけで、次のように問題が修正されました。

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

0
user7023213

ホストマシンのnginxが起動しているかどうかを確認し、停止します。

Sudo service nginx stop

0
Anderson Couto

問題は、ポート80でイメージを実行する権限がないことです。そうするには、docker runコマンドに-user rootを追加します。これにより、ルート権限が提供され、実行されます。

0
Mahesh Chandra