Docker port error で起動できない
Docker コンテナ起動で already in use エラーで web コンテナが起動できません。
エラー内容
Ubuntu でポートプロセス特定とポート解放
ポートを使用しているプロセスを確認: まず、ポート 80 を使用しているプロセスを特定しましょう。ターミナルで以下のコマンドを実行して、ポート 80 を使用しているプロセスを表示します。
上記コマンドは、ポート 80 を使用しているプロセスの詳細を表示します。プロセス ID(PID)などの情報を確認します。
ポートを解放する: 別のプロセスがポート 80 を使用している場合、それを停止してポートを解放する必要があります。ポートを使用しているプロセスを停止するために、以下のコマンドを使用します。ここで<PID>
は、上記で確認したプロセス ID です。
注意: kill -9 は強制終了のコマンドです。プロセスが正常に終了しない場合に使用しますが、注意して使用してください。
Docker コンテナを再起動: ポート 80 を解放した後、Docker コンテナを再起動してみてください。
別のポートを使用する: もしそのポートが他のアプリケーションで重要な場合、Docker コンテナに割り当てるポートを変更することも検討できます。例えば、コンテナのポートを 8080 に変更してみるなど。
ポートを使用しているプロセスを特定し、必要ならば停止することで、Docker コンテナがポートをバインドできるようになるはずです。
Apache がポート 80 を使用していることが分かります。Apache を削除する手順を以下に示します。
Ubuntu で Apache を削除するには、次のコマンドを使用します。
Apache サービスを停止します。
Apache パッケージをアンインストールします。
設定ファイルや関連ファイルも削除します。
これにより、Apache 関連のファイルや設定がシステムから削除されます。ただし、この操作はシステム上の Apache 関連の設定やデータをすべて削除するため、注意が必要です。
削除が完了したら、ポート 80 が解放され、Docker コンテナなど他のアプリケーションがそのポートを使用できるようになるでしょう。必要に応じて他の Web サーバーソフトウェアを使用するか、ポートを変更して Apache を再インストールすることもできます。
Docker コンテナのポートを変更
Apache Web サーバーがポート 80 を使用しているため、Docker コンテナのポートを変更して別のポートにバインドすることができます。
例えば、コンテナのポートを 8080 に変更する場合は、以下のようにコンテナを実行します。
これにより、コンテナのアプリケーションがホストのポート 8080 にアクセスできるようになります。