grasys blog
grasysブログ

GCE上でDockerコンテナを動かす

matsubara

こんにちは松原です。

Dockerイメージを使用して楽に構築を行いたいが、Docker ComposeやKubernetesを使用する程でもなく、単一のコンテナ運用を行いたいといったケースがあると思います。

GCPではGCE上で単一のコンテナ運用を簡単に行うことができます。

GCPにはコンテナ用に最適化されたOS「Container-Optimized OS」があります。
このOSはGKEの各ノードでも使用されるOSになります。

今回はMongoDBの公式イメージを使用してMongoDB環境を素早く構築していきます。

インスタンス作成

GCP Consoleからインスタンスの作成を行なっていきます。
「このVMインスタンスにコンテナイメージをデプロイします。」を選択することにより、コンテナ情報の入力画面が表示されます。
コンテナイメージ項目にdockerイメージ名、環境変数にrootユーザーの設定を入力します。

今回はDBデータを永続化させるために、外部ディスクに保存させます。
そのために外部ディスクの作成の設定を行います。

先ほどのコンテナ情報の入力画面のボリュームのマウントの項目で、コンテナに作成した外部ディスクをマウント設定します。

ファイアウォール設定のために、ネットワークタグを設定します。

これで「作成」ボタンを押してインスタンスを作成すれば終わりです。

ファイアウォール作成

外部からMongoDBへアクセスするために、先ほど設定したネットワークタグでデフォルトの27017ポートを開けます。

アクセス確認

あとはアクセスをするだけです。

$ mongosh "mongodb://xxx.xxx.xxx.xxx:27017" -u root -p example
Current Mongosh Log ID:	xxxxxxxxxxxx
Connecting to:		mongodb://xxx.xxx.xxx.xxx:27017/?directConnection=true
Using MongoDB:		5.0.2
Using Mongosh:		1.0.6
・・・

gcloudコマンドでの作成

gcloudコマンドで作成する場合はもっと素早く環境を作ることができます。

$ gcloud compute instances create-with-container mongo \
--machine-type=e2-medium \
--boot-disk-size=10GB \
--container-image=mongo \
--container-env=MONGO_INITDB_ROOT_USERNAME=root,MONGO_INITDB_ROOT_PASSWORD=example \
--container-mount-disk=name=mongo-disk,mount-path=/data/db,mode=rw \
--disk=name=mongo-disk,mode=rw,device-name=mongo-disk,auto-delete=false \
--tags=mongo

$ gcloud compute firewall-rules create mongo-fw \
--source-tags="mongo" \
--source-ranges="xxx.xxx.xxx.xxx/32" \
-allow=tcp:27017

株式会社grasys(グラシス)は、技術が好きで一緒に夢中になれる仲間を募集しています。

grasysは、大規模・高負荷・高集積・高密度なシステムを多く扱っているITインフラの会社です。Google Cloud、Amazon Web Services (AWS)、Microsoft Azureの最先端技術を活用してクラウドインフラやデータ分析基盤など、ITシステムの重要な基盤を設計・構築し、改善を続けながら運用しています。

お客様の課題解決をしながら技術を広げたい方、攻めのインフラ技術を習得したい方、とことん技術を追求したい方にとって素晴らしい環境が、grasysにはあります。
お気軽にご連絡ください。