前置き
Dockerを使用してサーバーを構築する際にホストOS側のポートが重複していると以下のようなエラーが出ます。
Bind for 0.0.0.0:8000 failed: port is already allocated
解消方法
例えば、Dockerを使用したアプリ開発のため、webサーバーをlocalhost:8000でホスト側のポートを指定しているとして、この状態で別のコンテナをlocalhost:8000でポートを指定して起動するとエラーが生じます。
ホスト側のポートは重複できないので、このような場合は、現在使用しているアプリのポート番号を変えてサーバーを再起動するか、現在起動しているコンテナのポート番号は変えず、新たに起動するコンテナを別のポート番号で起動するか、もしくは現在起動しているコンテナを停止し、ポートを閉じてしまうかのいずれかになります。
8000番を指定しているプロセスは以下コマンド実行し、PID列の番号を確認します。
lsof -wi tcp:8000
kill PID(今回は例として1079とします) の形式でコマンドを実行すると8000番を使用しているプロセスは終了するので、ポートの競合がなくなりエラーが解消されます。
kill 1079
まとめ
いかがでしたでしょうか。本記事ではDockerでポート番号重複によるエラーを解消する方法について紹介しています。