😺

Dockerにてdocker-compose upやsail up -dなどで立ち上がらないときの対処法

2024/05/11に公開

どういう時に起こりうるか

考えうることとして、以下のタイミングだと考えられます。他にもこういうタイミングでdocker-compose upができないかわかる方がいらっしゃいましたら、コメントをしてくださると幸いです。

・ PCの再起動
・エディタのアップデートなど

立ち上がらない時のエラーメッセージ

Dockerにて立ち上がらない時、以下のエラーメッセージが表示されるかと思います。

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

上記のエラーメッセージを簡単な言葉に言い換えると「ポートが利用可能ではありません。アドレスは使用中です。」

上記のエラーメッセージより解決するためには、現在使用中のポートを利用可能にすることです。

解決策

ポートの確認

現在使用中のポートがエラーメッセージより3306ということがわかります。
次のコマンドで使用中のポートがリストとして表示されているか確認します。

sudo losf -i :3306

上の3306の部分は、エラーメッセージにて該当するポート番号を入れる。

※sudo: 一般ユーザーがroot権限を与えて、プログラムを実行するときに使用するコマンドです。入力後、パスワードの入力が求められるため、パスワードの入力をします。

上記のコマンドを入力した後に、以下にあるようなリストが表示されているか確認してください。

//コマンドを実行後に、以下のリストが表示されていたらOK
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Kite    966 take   19u  IPv4 0x99aec8d5b8918691      0t0  TCP 192.168.8.57:56329->nrt12s45-in-f14.1e100.net:http (ESTABLISHED)

使用中のポートを利用可能にするには?

上のリストに使用中のものが表示されているかと思います。
使用中のものが特定できたら、次のコマンドで終了することができます。

sudo kill <PID>

PIDと書かれているものが、ポートを使用しているプロセスのIDです。
今回であれば、966がPIDに当たります。

再度、使用中のポートにてリストとして表示されていないか以下のコマンドで確認します。

sudo losf -i :3306

リストとして表示されていなければ、もう一度docker-compose up -dやsail up -dなどでDockerのコンテナが起動するか確認してください!
以下の参考サイトの1つ目を元にしています。より詳細については、参考サイトの1つ目を確認していただけるといいかと思います。

参考サイト

https://01memo.com/docker/ports-error/
https://linuc.org/study/column/4047/

Discussion