ys memos

Blog

docker on ubuntuでaddress already in useの解消


docker

2021/12/10


Docker を使っていて,謎のaddress already in useが吐き出され,docker psで確認してもコンテナが起動していないという事象が発生した.

エラーの全体を見ると,何のコンテナを建てようがエラーは起こると思われるが,今回の私の例では PostgreSQL コンテナで発生した.


address already in useの通り,「アドレスが既に使われていますよー」という状態である.


私の場合 PostgreSQL で発生したためポートが5432であった.そのため,以下のコマンドでポートの仕様状況を確認する.

$ netstat -pna | grep 5432

この結果,PostgreSQL がポートを使用していることが分かった.

Docker とは別で以前インストールしていた PostgreSQL が起動していて,ポートを使用していたためエラーが出ていた.


このような問題を解決するためにやるべきことは,「PostgreSQL を停止する」に尽きる.そこで,以下のコマンドを実行すると停止出来るため,コンテナが起動できる.

$ systemctl stop postgresql

一時的にpostgresqlを停止してポートを開放したためコンテナは起動されたが,OS 起動時に自動起動の設定になっている場合,再起動したら再度ポートが使えなくなる.

その都度postgresqlを停止するのは非常に面倒である.

そこで,私の場合ローカルでは開発用途でしか PostgreSQL を使わないため,通常インストールされた PostgreSQL をアンインストールすることにした.


!!! PostgreSQL のアンインストールに伴ってデータが消失する可能性があります.自己責任でお願いします!!!
$ sudo apt purge postgresql
$ sudo apt remove --purge postgressql-*
$ sudo userdel postgres

ちなみに,sudo apt install postgresqlのみでは自動起動が行われてしまい,出来なかった.


やっぱり Docker で走らせたほうがいいな〜


関連タグを探す