DockerベースのPostgreSQLサーバをCompute Engineで構築


この記事では、GCP Compute EngineでDockerベースのPostgreSQLサーバで動作するインスタンスを作成し、外部接続環境を作成してみます.この記事にフォローする前に、まずGCPアカウントを作成します.

GCP


Compute Engine



GCP Compute Engineコンソールに入り、上部の인스턴스 만들기ボタンをクリックします.

インスタンス名を設定します.PostgreSQLサーバを実行するインスタンスであるため、postgresに設定しました.また、GCP無料評価を使用するには、リビジョンをus-west1(오리건)、マシン構成をe2-microに設定します.

30 GBの標準永久ディスクを選択します.

ネットワークラベルにpostgresと入力し、만들기ボタンをクリックします.

Compute Engineインスタンスが作成されました.
GCP無料格付け使用量(cloud.google.com)
Postgres Official Image (Docker Hub)

VPCネットワーク



5432番ポートが開き、外部ネットワークからCompute EngineインスタンスのPostgreSQLサーバに接続します.GCP VPCネットワークにアクセスしたら、방화벽ラベルをクリックすると上記の画面が表示されますので、방화벽 규칙 만들기ボタンをクリックしてください.

ファイアウォールのルールの名前は勝手に決めます.

次に、ターゲットラベルにpostgresを入力し、ソースIP範囲に0.0.0.0/0を入力して、すべてのIPアドレス接続を許可する.

最後に、PostgreSQLサーバを実行する5432番ポートを開き、만들기ボタンをクリックします.

ローカルコンピュータ


SSH接続

$ gcloud init
$ gcloud components update
$ gcloud compute ssh {GCP계정이름}@{인스턴스이름}
gcloudを取り付けます.その後、GCPアカウントにログインし、gcloudを更新し、SSHをGCP Compute Engineインスタンスに接続しようとします.初めてSSH接続を試したとき、パスワードの設定を求めるメッセージが表示され、SSH接続のたびに使用するパスワードを入力します.
$ docker ps
$ docker rm -f {컨테이너ID}
docker psコマンドを使用して、デフォルトで実行されているpostgres:alpineコンテナIDを決定し、docker rmコマンドを使用してコンテナを削除します.

コンテナの作成

$ pwd
/home/{GCP계정이름}
$ mkdir -p postgresql/data
$ docker run \
  -d \
  -e POSTGRES_PASSWORD={DB계정비밀번호} \
  -e POSTGRES_USER={DB계정이름} \
  -p 5432:5432 \
  -v /home/{GCP계정이름}/postgresql/data:/var/lib/postgresql/data \
  --restart=always \
  --name postgres \
  postgres:alpine
デフォルトで実行されているPostgreSQLコンテナを削除し、詳細オプションを設定して新しいコンテナを作成します.PostgreSQLでは、POSTGRES_PASSWORD環境変数が必要です.-eオプションで環境変数をコンテナに渡すことができます.ポートとボリュームを設定することもできます.

PostgreSQLサーバへの接続

$ psql --host={인스턴스외부IP} --user={DB계정이름}
Password for user {DB계정이름}: {DB계정비밀번호}

ローカルコンピュータ接続からGCP Compute EngineインスタンスのPostgreSQLサーバを実行してみます.

コンテナ・メトリックの表示

$ docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker:/var/lib/docker:ro 
  --publish 9559:8080 \
  --detach \
  --restart=always \
  --name=cadvisor \
  google/cadvisor:latest
私たちが提供するcAdvisorでは、各コンテナのリアルタイムコンピュータリソースの使用状況をグラフで表示できます.docker.ioでは、cAdvisorはドッキングイメージであり、cAdvisorをコンテナとして実行できます.
http://{인스턴스외부IP}:9559/containers/docker
docker runでcAdvisorコンテナを実行し、ブラウザでアドレスにアクセスすると、各コンテナのメトリックが表示されます.