docker: Error response from daemon: driver failed programming external connectivity on endpoint xxx (xxx):x Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE). が出たら…

こんばんは、daihaseです。

はい、異様に長いタイトルですね。Dockerのエラーなんですが、最初にMacでコンテナを走らせようとすると1度くらいは遭遇するコレ。その解決方法をメモ。

※例えばnginxのイメージからport 80でコンテナ起動した際などよく起きますネ
docker container run –name httpServer -d -p 80:80 nginx ←こういうのとか。

まぁエラーの内容そのままなんですが、あるコンテナを走らせようとした際に(Port80で)、すでに別のサービスで同じポートを掴んじゃってるため、このようなエラーが出ています。

Macの場合、デフォルトでApacheが入っていてそれがPort80で立ち上がってるため(ブラウザでlocalhost:80と叩いて It works と出たら動いちゃってます)、それを止めれば解決ですね。

一応以下のコマンドで確認。

環境にもよりますが、自分の場合は以下のように出ました。

ちょうど上から2個目、httpd(これはapacheのプロセスの名称ですね)が80を掴んじゃってるのがわかります。

Macで起動してるapacheを止めちゃいましょう。

その後、再度同じ「docker container run –name httpServer -d -p 80:80 nginx」とコマンドを実行して以下のようなエラーが出る時があります。

これも上で一度コンテナを走らせるコマンドを実行したため、既に同じ名前のコンテナが存在しちゃってるので消してしまえばOKです。

これでコンテナが削除されるので、次はちゃんとnginxのコンテナが起動するかと思います。

それでは良い開発ライフを〜

スポンサーリンク
336 x 280 レクタングル(大)
336 x 280 レクタングル(大)