Dockerでコンテナを起動できないという事象が発生しました。
#忘備録のためまとめています。
1. エラー内容
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: Only one usage of each socket address (protocol/network address/port) is normally permitted.
このエラーメッセージは、ポート番号がすでに使用されているためDockerがコンテナを起動できないことを示しています。具体的には、laravel8-tutorial-mysql-1コンテナがポート番号3306を使用しようとしたところ、すでに他のプロセスがこのポート番号を使用しているため、Dockerがコンテナを起動できなかったということです。
2. 原因として
ポート番号3306のコンテナを正規終了させなかったことと考えられる。
3. 解決策
3.1 使用されているポート番号を調べる
powershellから次のコードを実行すれば使用されているポート番号を調べることができます。
Get-NetTCPConnection -State Listen
(上記のようになっているはず)
3.2 ポート番号を閉じる
同じくpowershellから次のコードを実行すれば使用されているポート番号を閉じることができます。
Stop-Process -Id (Get-NetTCPConnection -LocalPort <ポート番号> -State Listen).OwningProcess -Force
(この辺のシェルについては、具体的に何をどうしているのかあんまりわかっていません。勉強のためにgoogle先生かchatGPTに聞いて学習した内容を後程追記します・・・)
(コマンドが間違っていない限り特にメッセージ等出力されないようです)
4. 終わりに
ポート番号ってなんすか??っていう状況のまま、Dockerでlaravelの環境構築を実施しました。個人開発によるDockerのハンズオン学習が狙いです。初心者の皆さん、一緒に頑張っていきましょう!