Docker コンテナ イメージを Artifact Registry に保存する
Artifact Registry は、プライベート パッケージと Docker コンテナ イメージを 1 か所で管理できる場所として機能します。
このクイックスタートでは、次の方法について説明します。
- Artifact Registry でプライベート Docker リポジトリを作成する
- 認証を設定する
- イメージをリポジトリに push する
- リポジトリからイメージを pull する
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
シェルを選択する
このクイックスタートをすべて実行するためには、Cloud Shell またはローカルシェルを使用します。
- Cloud Shell
- Cloud Shell は、Google Cloud でホストされているリソースを管理するためのシェル環境です。Docker と Google Cloud CLI(Google Cloud の主要なコマンドライン インターフェース)がプリインストールされています。
- ローカルシェル
- ローカルシェルを使用する場合は、ご利用の環境に Docker と gcloud CLI をインストールする必要があります。
Cloud Shell の起動
Cloud Shell を起動するには、次の手順に従います。
Google Cloud Console に移動します。
[Cloud Shell をアクティブにする]()ボタンをクリックします。
コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルで gcloud
コマンドを実行します。
ローカルシェルの設定
gcloud CLI と Docker をインストールするには、次の手順に従います。
gcloud CLI をインストールします。既存のインストールを更新するには、
gcloud components update
コマンドを実行します。Docker をまだインストールしていなければ、インストールします。
Docker がレジストリを操作するには特権アクセスが必要です。Linux や Windows では、Docker コマンドを実行するユーザーを Docker セキュリティ グループに追加します。Docker Desktop は、root ユーザーとして仮想マシンで実行されるため、この手順は MacOS では不要です。
Linux
Docker セキュリティ グループは
docker
と呼ばれます。ユーザー名を追加するには、次のコマンドを実行します。sudo usermod -a -G docker ${USER}
Windows
Docker セキュリティ グループは
docker-users
と呼ばれます。管理者のコマンド プロンプトからユーザーを追加するには、次のコマンドを実行します。net localgroup docker-users DOMAIN\USERNAME /add
ここで
- DOMAIN は Windows ドメインです。
- USERNAME はユーザー名です。
ログアウトして再度ログインすると、グループ メンバーシップの変更が反映されます。仮想マシンを使用している場合、メンバーシップの変更を有効にするために、仮想マシンの再起動が必要になることがあります。
Docker が稼働中であることを確認するには、現在の時刻と日付を返す次の Docker コマンドを実行します。
docker run --rm busybox date
--rm
フラグは、終了時にコンテナ インスタンスを削除します。
Docker リポジトリを作成する
このクイックスタートのサンプル イメージを保存する Docker リポジトリを作成します。
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
追加 [リポジトリを作成] をクリックします。
リポジトリ名として
quickstart-docker-repo
を指定します。形式として Docker を選択し、モードとして Standard を選択します。
[ロケーション タイプ] で、[リージョン] を選択し、ロケーション
us-central1
を選択します。[作成] をクリックします。
このリポジトリがリポジトリ リストに追加されます。
gcloud
次のコマンドを実行して、場所
us-central1
に「docker repository」という説明の付いたquickstart-docker-repo
という新しい Docker リポジトリを作成します。gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \ --location=us-central1 --description="Docker repository" \ --project=PROJECT
ここで PROJECT は、Google Cloud プロジェクト ID です。
次のコマンドを実行して、リポジトリが作成されたことを確認します。
gcloud artifacts repositories list \ --project=PROJECT
Artifact Registry コマンドの詳細については、gcloud artifacts
コマンドを実行してください。
認証を構成する
イメージを push または pull する前に、Google Cloud CLI を使用して Artifact Registry に対するリクエストを認証します。
リージョン us-central1
の Docker リポジトリの認証を設定するには、次のコマンドを実行します。
gcloud auth configure-docker us-central1-docker.pkg.dev
このコマンドにより、Docker 構成が更新されます。Google Cloud プロジェクトの Artifact Registry に接続して、イメージの push と pull ができるようになりました。
その他の認証方法については、認証方法をご覧ください。
push するイメージを取得する
このクイックスタートでは、hello-app
という名前のサンプル イメージを push します。
次のコマンドを実行して、イメージのバージョン 1.0 を pull します。
docker pull us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Artifact Registry のイメージパスは複数の部分から成ります。このサンプル画像の場合:
us
は、リポジトリの場所です。docker.pkg.dev
は、Artifact Registry Docker リポジトリに格納されているコンテナ イメージのホスト名です。google-samples
は、リポジトリ ID です。containers/gke/
は、google-samples
の下にあるイメージのパスです。
イメージをリポジトリに追加する
Docker イメージを Artifact Registry に push する前に、リポジトリ名でタグ付けする必要があります。
イメージにレジストリ名をタグ付けする
Docker イメージにレポジトリ名をタグ付けすると、イメージを特定の場所に push するように docker push
コマンドが構成されます。このクイックスタートでは、ホストの場所は us-central1-docker.pkg.dev
です。
次のコマンドを実行して、イメージに quickstart-image:tag1
としてタグ付けします。
docker tag us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 \ us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
Where
us-central1
は、リポジトリのロケーションです。docker.pkg.dev
は、作成した Docker リポジトリのホスト名です。- PROJECT は、Google Cloud プロジェクト ID です。
プロジェクト ID にコロン(
:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。 quickstart-docker-repo
は、作成したリポジトリの ID です。quickstart-image
は、リポジトリで使用するイメージ名です。イメージ名は、ローカル イメージ名とは異なる場合があります。このクイックスタートでは、イメージをリポジトリ IDquickstart-docker-repo
の直下に保存します。tag1
は Docker イメージに追加するタグです。タグを指定しない場合は、Docker でデフォルトのタグlatest
が適用されます。
これで、作成したリポジトリにイメージを push する準備が整いました。
イメージを Artifact Registry に push する
認証を構成してローカル イメージにタグ付けしたら、作成したリポジトリにイメージを push できます。
Docker イメージを push するには、次のコマンドを実行します。
docker push us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
PROJECT は、実際の Google Cloud プロジェクト ID に置き換えます。
プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
Artifact Registry からイメージを pull する
Artifact Registry からローカルマシンにイメージを pull するには、次のコマンドを実行します。
docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
PROJECT は、実際の Google Cloud プロジェクト ID に置き換えます。
プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
出力は次のようになります。
latest: Pulling from [PROJECT-ID]/quickstart-image:tag1 Digest: sha256:70c42... Status: Image is up to date for us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
リポジトリを削除する前に、保持する必要があるイメージが別の場所で使用可能であることを確認してください。
リポジトリを削除するには、次の手順を行います。
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
[リポジトリ] リストで、
quickstart-docker-repo
リポジトリを選択します。[削除] をクリックします。
gcloud
quickstart-docker-repo
リポジトリを削除するには、次のコマンドを実行します。
gcloud artifacts repositories delete quickstart-docker-repo --location=us-central1
次のステップ
- コンテナ イメージの操作の詳細を確認する。
- Docker について詳しく学習する。
- DevOps に関するリソースをご覧ください。また、DevOps Research and Assessment(DORA) 研究プログラムについても確認してください。