目的
ローカルで作成したdockerイメージ(webサーバなど)を作成し、Google Cloud へのアップし起動する方法を忘れるので、調べた内容をメモします
目次
- ローカルの docker イメージ を Google Container Registry にアップ
- Google Cloud Console で GCE(VMインスタンス) の作成
事前準備
- Google Cloud Console で プロジェクトの作成
- PC へ google cloud sdk(gcloud CLI) のインストール
- docker の インストール
- docker イメージを PC上に 作成済みと仮定
手順
1. ローカルの docker イメージ を Google Container Registry にアップ
アップする docker イメージ のタグづけ
Google Container Registry の サイトを参照すると以下の通りです。
docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]
ざっくり説明すると、、、
- SOURCE_IMAGE:ローカルの docker イメージの名称
- HOSTNAME:Google Container Registry のローケーション。今回は一番安いusリージョンで対応することを前提とします
- PROJECT-ID:Google Cloud Console で 作成した プロジェクトID
- IMAGE:適切な名称
です。
具体的には以下のように、作成します(HOSTNAME以外のパラメータは適当です)。
docker tag test us.gcr.io/test-123456/test
イメージの push
事前準備として、Container Registry を認証する必要があり、gcloud を Docker 認証ヘルパーとして使用します。使用方法は以下の通りです。
gcloud auth configure-docker
Google Container Registery へ docker イメージを push します。
docker push us.gcr.io/test-123456/test
2. Google Cloud Console で GCE(VMインスタンス) の作成
GCE(VMインスタンスの作成)
Google Cloud Console にて、該当プロジェクト にて、
Compute Engine -> VMインスタンス
を選択する
インスタンス一覧画面にて、「インスタンスを作成」を選択する
以下を変更後、「作成」ボタンを選択する
- 名前:任意の名称
- リージョン:us-east1
- コンテナ:チェックを入れる
- コンテナイメージ:pushしたdockerイメージ(us.gcr.io/test-123456/test)
- マシンタイプ:micro(共有vCPU x 1)起動後、パフォーマンスが足りない時にはインスタンス一覧画面でリコメンドあり
- ファイアウォール:HTTPトラフィックを許可
GCEのポートの解放
docker で 80ポート以外を利用している場合には、GCE のポートの開放が必要です。
今回は、default の http のポートに 8050 を追加します
※ 本来はファイアウォールルールを追加して、VMインスタンスでルールを指定する方が望ましいです
Google Cloud Console にて、該当プロジェクト にて、
VPNネットワーク -> ファイアウォール -> default-allow-http の項目を選択 -> 「編集」
を選択し
プロトコルとポート の 指定したプロトコルとポート を以下の通り、変更後、「保存」ボタンを押す。
tcp:80,8050
インスタンスの起動
Google Cloud Console にて、該当プロジェクト にて、
Compute Engine -> VMインスタンス
を選択し、作成したインスタンス に チェックを入れ、 右上の「開始」ボタンを押す
数分後、インスタンスが起動し、外部IP が振られるので、そのIPを利用し、接続確認を行なう
今後の課題
http での接続では、リクエスト/レスポンスの内容が丸見えになってしまい気持ちが悪いので、
GCE へのアクセスを https で接続したい