Container Registry のクイックスタート

Container Registry は、Google Cloud 上で実行される非公開のコンテナ イメージ レジストリです。

このクイックスタートでは、次の方法について説明します。

  • Docker イメージをビルドする
  • イメージをプロジェクトの Container Registry に push する
  • イメージをプロジェクトの Container Registry から pull する

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。 プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Container Registry API を有効にします。

    API を有効にする

  5. Cloud SDK をインストールし、初期化します
  6. Docker をインストールします。Ubuntu や Debian などの Linux ベースのオペレーティング システムを使用している場合は、ユーザー名を docker グループに追加して、sudo を使わずに Docker を実行できるようにします。
    sudo usermod -a -G docker ${USER}

    ログアウトして再度ログインすると、グループ メンバーシップの変更が反映されます。 仮想マシンを使用している場合、メンバーシップの変更を有効にするために、仮想マシンの再起動が必要になることがあります。

  7. Docker を開きます。Docker が稼働中であることを確認するには、現在の時刻と日付を返す次の Docker コマンドを実行します。
  8. docker run busybox date

このクイックスタートでは、Cloud Shell、または Cloud SDK がインストールされている環境を使用します。

Docker イメージをビルドする

このクイックスタートでは、Container Registry に push するイメージとして、次の Docker イメージをビルドします。この Docker イメージには、小さな Python ウェブアプリが含まれます。このアプリは Flask のウェブ フレームワークを使用して、「Hello, World!」というメッセージを表示するウェブページを提供します。

Docker イメージを作成するには:

  1. 3 つの Docker イメージ ファイルを格納するディレクトリを作成します。

  2. このディレクトリに、Dockerfilerequirements.txtapp.py の 3 つのファイルを作成します。各ファイルの内容に含める必要があるものについては、以下の例をご覧ください。

Dockerfile

# The file Dockerfile defines the image's environment
    # Import Python runtime and set up working directory
    FROM python:3.5-slim
    WORKDIR /app
    ADD . /app

    # Install any necessary dependencies
    RUN pip install -r requirements.txt

    # Open port 80 for serving the webpage
    EXPOSE 80

    # Run app.py when the container launches
    CMD ["python", "app.py"]
    

requirements.txt

# The file requirements.txt defines the image's dependencies
    Flask
    

app.py

# The Docker image contains the following code in app.py
    from flask import Flask
    import os
    import socket

    app = Flask(__name__)

    @app.route("/")
    def hello():
        html = "<h3>Hello, World!</h3>"
        return html

    if __name__ == "__main__":
      app.run(host='0.0.0.0', port=80)
    

Docker イメージをビルドするには、イメージのファイルが含まれているディレクトリから、次の Docker コマンドを実行します。

docker build -t quickstart-image .
    

これで、ローカルマシンに Docker イメージが作成されました。

イメージを Container Registry に追加する

gcloud コマンドライン ツールを認証ヘルパーとして使用するように docker を構成する

イメージを push または pull するには、gcloud コマンドライン ツールを使用して Container Registry へのリクエストを認証するように Docker を構成する必要があります。これを行うには、次のコマンドを実行します(実行する必要があるのは一度だけです)。

gcloud auth configure-docker
    

イメージにレジストリ名をタグ付けする

Docker イメージを Container Registry に push する前に、そのイメージにレジストリ名をタグ付けする必要があります。Docker イメージにレジストリ名をタグ付けすると、イメージを特定の場所に push するように docker push コマンドが構成されます。このクイックスタートでは、ホストの場所は gcr.io です。

Docker イメージにタグを付けるには、次のコマンドを実行します。

docker tag quickstart-image gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

ここで

  • [PROJECT-ID] は、Google Cloud Console プロジェクト ID です。対象の ID をコマンドに追加します。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • gcr.io はホスト名です。
  • quickstart-image は Docker イメージの名前です。
  • tag1 は Docker イメージに追加するタグです。タグを指定しない場合は、Docker でデフォルトのタグ latest が適用されます。

イメージを Container Registry に push する準備ができました。

イメージを Container Registry に push する

認証ヘルパーとして gcloud を使用するように docker を構成し、ローカル イメージにレジストリ名をタグ付けしたら、そのイメージを Container Registry に push できます。

Docker イメージを push するには、次のコマンドを実行します。

docker push gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

[PROJECT-ID] は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

新しいホストの場所にイメージを push すると、プロジェクトに固有の基になるストレージ バケットが作成されます。Container Registry でホストされているイメージは Cloud Console から、またはウェブブラウザでイメージのレジストリ名(http://gcr.io/[PROJECT-ID]/quickstart-image)にアクセスして確認できます。

イメージを Container Registry から pull する

Container Registry からローカルマシンにイメージを pull するには、次のコマンドを実行します。

docker pull gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

[PROJECT-ID] は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

出力は次のようになります。

latest: Pulling from [PROJECT-ID]/quickstart-image:tag1
    Digest: sha256:70c42...
    Status: Image is up to date for gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

クリーンアップ

このクイックスタートで使用したリソースについて、Google Cloud アカウントに課金されないようにするには:

次のコマンドを実行して Container Registry から Docker イメージを削除します。

gcloud container images delete gcr.io/[PROJECT-ID]/quickstart-image:tag1 --force-delete-tags
    

[PROJECT-ID] は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

次のステップ