LoginSignup
17
16

More than 5 years have passed since last update.

GKEでGoogle Container Registryを利用する

Posted at

Google Container Engine(GKE)でコンテナを起動する際に、dockerイメージの保管場所にGoogle Container Registryを使用する方法です。

ローカルでdockerイメージを作成 -> Google Container Registryにpush -> pushしたdockerイメージをGKEで利用する、といった手順になります。

環境

  • ローカルPC
    • PC:MacBook Pro
    • OS:OS X El Capitan(ver 10.11.6)
    • Docker:Docker for Mac[stable] ver 1.12.1(build:12133)

前提

下記フォルダ構成で、各種リソースをローカルに配置することを前提としています。

gke-test
  |--Dockerfile
  |--html
    |--index.html

Google Cloud SKDのインストール

ローカルからGoogle Container Registryにdockerイメージをpushする為に、Google Cloud SDKを下記よりインストールします。
Google Cloud SDKのインストール

dockerイメージの作成

自分で作成したイメージがGKEで使用されていることを確認する為に、簡単なHTMLファイルをnginxの公開用フォルダに格納して、それをdockerイメージにします。

・HTMLファイルの作成

index.html
<!DOCTYPE html>
<head>
  <meta charset="utf-8">
  <title>nginx test</title>
</head>
  <body>
    <h1>Hello World!</h1>
  </body>
</html>

・Dockerfileの作成
公式のnginxイメージをベースに、作成したhtmlファイルをnginxの公開フォルダにコピーするDockerfileを作成します。

Dockerfile
FROM nginx
COPY html /usr/share/nginx/html

・dockerイメージの作成
Dockerfileを元にdockerイメージを作成します。
Google Container Registryにpushできるようにする為に、作成するdockerイメージには「リージョン/プロジェクトID/イメージ名:タグ」の形式で名前をつけています。

$ cd gke-test
$ docker build -t gcr.io/xxxxxx-xxxxxx-123456/mynginx:latest .

なお、Google Container Registryで使用できるリージョンは

リージョン 地域
us.gcr.io アメリカ
es.gcr.io ヨーロッパ
asia.gcr.io アジア

となっていて、gcr.ioと指定した場合は、us.gcr.ioを指定したことになり、アメリカのリージョンを利用することになります。
また、プロジェクトIDはGoogle Cloud Platform上のプロジェクトIDを指定して下さい。

Google Container Registryへdockerイメージをpush

dockerイメージの作成が完了したら、Google Container Registryへdockerイメージをpushします。
先にインストールしたGoogle Cloud SDKを使用してpushを行います。

$ gcloud docker push gcr.io/xxxxxx-xxxxxx-123456/mynginx:latest

pushに成功すれば下記のようにGoogle Container Resitoryにイメージが保管されたことを確認できます。

GKE-GCR-イメージpush後.png

pushしたdockerイメージの利用

前回と同じ構成で、ReplicationController、Serviceを立ち上げます。
その際、ReplicationControllerで使用するdockerイメージにGoogle Container Registryに保管したものを使用するように、ReplicationControllerのyamlファイルを修正します。

nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: frontend
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-container
        image: gcr.io/xxxxxx-xxxxxx-123456/mynginx:latest #変更箇所
        ports:
        - containerPort: 80

ReplicationController、Serviceの起動

前回と同じ方法で、ReplicationControllerとServiceを立ち上げます。
立ち上げた後にブラウザでアクセスして、用意したindex.htmlファイルの内容が表示されれば成功です。

GKE-pushイメージ使用確認.png

最後に

Google Container Registryにdockerイメージを保管するまでのやり方を把握するのに少し時間を要しました。
しかし、一度やり方がわかってしまえば、プライベートなDocker Registryを簡単に利用でき、GKEとの連携も特別な設定が不要なのですごく便利だと思います。

参考リンク

プライベートDocker RegistryをGoogle Container Registry で構築

17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16