Engineering

Nov 29, 2017

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

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

関連記事

記事検索

気になるサイト内の記事を検索する

プロフィール

バンクーバー在住のフルスタックエンジニアです。React, Ruby on Rails, Go などでお仕事しています。職場がトロントなので日本、トロント、バンクーバーの三つの時天空を操って生活しています。

プロモーション