docker | docker compose up でエラー (Error response from daemon: Ports are not available… address already in use)

うさぎ
うさぎ

めちゃくちゃ急いでるときにdocker compose upができなくて焦った…

うさぎ
うさぎ

焦るなんてめずらしいね!なにがあったの?

うさぎ
うさぎ

ポートが使用できないって言われちゃって。

より詳しく書いた記事があるのでよろしければこちらをご覧ください

Docker |「Error response from daemon: Ports are not available」というエラーが出た時の対処法 Docker |「Error response from daemon: Ports are not available」というエラーが出た時の対処法

エラー内容

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:80 -> 0.0.0.0:0: listen tcp 0.0.0.0:80: bind: address already in use

直訳

デーモンからのエラー応答。ポートは使用できません:ポートの公開 TCP 0.0.0.0:80 -> 0.0.0.0:0: listen tcp 0.0.0.0:80: bind: アドレスはすでに使用中です。

えええ。。

原因調査

プロセスが開いているファイルを表示するコマンドの、lsof で調べてみる。

-i はオプション。ネットワークソケットファイルを指定することができます

今回は:80ででているのでそちらを指定

// ターミナルに入力
sudo lsof -i:80
// 実行結果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 12345 daemon 7u IPv6 0x90...(省略)..... 0t0 TCP *:http (LISTEN)
httpd 12346 daemon 7u IPv6 0x90...(省略).....
..(省略)...

なにやらたくさんでた。確かに80つかってそう。

解決方法

つかっているとことがわかったので消していこう

// ターミナルに入力
sudo kill 12345
sudo kill 12346

sudo kill (PID) なので、数字の部分はさっき調べたものを順番にいれました

その後再度docker compose up したらいけました!