PostgresのコンテナのDBの中身をみたい
掲題のようにdockerで作成したDBコンテナのDBにホスト側のクライアントツールで接続したいという欲求が高まったので記事にしました。
vagrantなどだと完全に別OSのサーバになるので、IPアドレスを調べてそのまま接続ということができるのですが、Dockerの場合は同OS上にコンテナを作成するのでIPは変わらずにいけます。
psql -U [任意のuser] -h 127.0.0.1 database
ホストOSでもデータベースをインストールしている場合
ホストOSでもpoostgresなどのDBサーバが起動している場合は、クライアントツールが先にホストOSのデータベースに接続してしまうので思ったことができません。
その場合はサーバを停止してあげるかホスト側の5432以外のポートをコンテナの5432のポートに転送するように設定します。
サーバを停止せずにコンテナに接続するポートを変更する場合は、 コマンドなら
docker run -p [外部から接続したいポート]:80 postgres
docker-comopseなら
db:
images: postgres
ports:
- "[外部から接続したいポート]:5432"
とします。
あとは接続の際に先ほど指定した外部から接続する際に使うポートを指定してあげれば無事に接続できます。
psql -U [任意のuser] -h 127.0.0.1 -p [指定したポート] database
GUIクライアントツールでも同様にポート番号やユーザ名に注意して接続可能です。
その他Dockerに関する記事たち
dockerに関する記事を書いているので、よろしければどうぞ。
DockerでRails + Nginx + Postgresの環境を構築する。その①
dockerの入門として、基本的な仕組みを説明し、コンテナを起動させたり、コンテナ’に接続してみたりしています。
DockerでRails + Nginx + Postgresの環境を構築する。その②
rubyのイメージを使って、railsアプリケーションを構築する方法を説明しています。
DockerでRails + Nginx + Postgresの環境を構築する。その③
dockerでのRails + Nginx + Postgres 環境について解説しています。