Dockerにてdocker-compose upやsail up -dなどで立ち上がらないときの対処法
どういう時に起こりうるか
考えうることとして、以下のタイミングだと考えられます。他にもこういうタイミングで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つ目を確認していただけるといいかと思います。
参考サイト
Discussion