dockerコンテナのDBにホストから接続する方法

2018年1月30日

 

 

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 環境について解説しています。