Dockerを起動させてエラーが起こる
先日作成したDockerを開く際にエラーが起こりました。
ネットワークの不調ということでdownさせずに落としたせいかな、、、と焦りながら
必死に解決策を試していきます。
#Dockerを起動させる
$ docker-compose up -d
本来は↑のように起動するはずなのですが、エラー時はRunnimgが1/2で止まってしまいました。エラーメッセージを確認すると、、、
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:50080 ->
127.0.0.1:0: listen tcp 0.0.0.0:50080: bind: An attempt was made to access a socket
in a way forbidden by its access permissions.
このエラーは、ポート 50080 がすでに使用されているか、 アクセス権限の問題で Docker がポートをバインドできないことが原因です。
と表示されました。
今回はメッセージで表示された原因を、
①ポート番号が既に使用されているか
②アクセス権限のやDockerをブロックしているものはないか
の2つに絞って確認していくことにします。
早速以下の方法で、検証してみました。
エラーの解消方法①~ポート番号が既に使用されているか~
#使用中のポートを確認
netstat -ano | Select-String ":50080"
結果は反応なしで、何も表示されず
。
この場合は50080が使用されていないまたは使用できない状況だと考えられます。
また、この方法でだいたいは表示されるので解決策は下記を参考にしてください。
エラーの解消方法②アクセス権限またはDockerをブロックしているものはないか~
エラー原因が全く特定できず、想定もできなかったためコパイロットを頼ることにしました。
すると、いくつか解決策を提案してくれました。
- ファイアウォールの設定を確認:ポート 50080 がブロックされていないか確認する
- セキュリティソフトの設定:Docker の通信が制限されていないか確認する
まずは順番に行っていきます。
1.ファイアウォールの設定を確認
-
Win+R
を押し、firewall.cpl
を実行する - 左側の「詳細設定」をクリック

- 受信・送信の規則をそれぞれ同様に設定していきます

- 「新しい規則」を選択し、「ポート」を選択して「次へ」


- 「特定のローカルポート」に 50080(ポート番号)を入力し、「次へ」

- 「接続を許可する」を選択し、「次へ」
- 適用するネットワーク(プライベート、パブリックなど)を選択し、「次へ」
- ルール名を設定(例:Docker Port ポート番号)し、「完了」

- 送信ルールの確認も同様の手順で追加しました
2.セキュリティソフトの設定を確認
- 使用しているウイルス対策ソフト(Windows Defender、McAfee、Norton、ESET など)を開いて、ファイアウォールの設定を確認する
自分のPCにはAVASTがインストールされていたので、さっそく開いて中身を確認しました

- Docker Desktop や com.docker.backend.exe がブロックされていないか確認すると、
「ランサムウェアシールド」にそれらしきファイルが入っていたので、許可を実行しました

- 今後もブロックされないようにアプリを 例外設定 またはブロック対象にしないように設定する

一通り完了したので、ポート番号が受信できる状況になったか確認します。
ポート番号が許可されているか確認する
- 再度使用中のポート番号を確認したところ、許可されているようです
Dockerの起動もでき、見事解決いたしました。
ポート番号を出力できない、状況確認ができない状況にあり大変苦労しました。
ソフトウェアのセキュリティでブロックされることもあるので、ぜひ今回の対処法を参考にしてみてください。