アプリケーション イメージについて

完了

コンテナ化されたイメージは、Azure Kubernetes Service (AKS) を使用する分散型アプリケーションに不可欠な部分です。 タグを使用すると、次のことができます。

  • 必要とするさまざまなコンテナー イメージを作成する。
  • コンテナー レジストリにイメージを格納する。
  • タグ付けされた特定のイメージをデプロイする。

このユニットでは、タグ付けされたアプリケーション イメージを CI/CD パイプラインで使用する方法について説明します。

コンテナー イメージ

コンテナー イメージは、アプリケーションとそのすべてのソフトウェア依存関係をカプセル化する実行可能ソフトウェア バンドルです。 このモジュールでは、Docker コンテナー イメージを使用して Contoso Web サイト アプリケーションをビルドします。

Docker イメージには、アプリケーション コードと、アプリケーションの完全に実行可能なイメージを作成するために必要な依存関係が含まれています。 コンテナー イメージは、コンテナー ランタイムの一連の命令を含む Dockerfile によって構成されます。

作成したフォークのルートにある Dockerfile を見ると、別の nginx イメージをベースとして使用することでイメージが開始されていることがわかります。 最初から始めるのではなく、必要なファイルが含まれている他のイメージから始める方が一般的です。

docker build コマンドを使用して、Dockerfile からイメージをビルドすることができます。

重要

docker build コマンドは、実行中のコンテナー内での Docker の使用が禁止されているため、Cloud Shell 環境内では機能しません。 docker build . コマンドをテストする場合は、リポジトリをローカルにクローンし、独自の Docker インストールを使用して実行する必要があります。

イメージ タグ

タグは、コンテナー イメージを操作するうえで重要な要素です。 タグを使用すると、イメージの種類がわかるため、同じ名前を持つ複数のイメージを区別できます。

たとえば、リポジトリ内の Node.js イメージをNode 12 から開始する場合は、Dockerfile にタグ FROM node:12 を含めることができます。 最新の安定したバージョンから始めたい場合は、タグ FROM node:current を使用できます。 タグは、イメージの種類と、その予想される動作を示します。

コンテナー イメージをビルドするには、GitHub リポジトリを作成するのと同じ手法を使用します。Docker コンテナー パスは、通常 "リポジトリ/イメージ名" のようになります。 ただし、タグを使用して区別する同じイメージの複数のバージョンをビルドすることができます。

このモジュールでは、リリース バージョンにラベルを付けるためにタグを使用します。 v*.*.* セマンティック バージョン管理規則 (バージョン 1.0.0 の場合は v1.0.0 など) を使って、運用環境バージョンごとにタグを作成します。 メイン ブランチにタグ付けされたすべてのプッシュでは、そのプッシュのタグと同じ名前の新しいイメージ タグが生成されます。 タグ付けされていないプッシュでは、latest タグのみが生成されます。

すべてのプッシュは、タグ付きかタグなしかを問わず、最新のコードで latest イメージを更新し、ステージングにデプロイします。 v* というタグが付いているイメージも、運用環境にデプロイされます。 正式なタグ付きイメージのみが運用環境にデプロイされますが、ステージングおよび運用環境の両方に latest のステージされたイメージが常に存在します。

コンテナー レジストリ

イメージの操作に関する重要な点は、それが格納される場所です。 "コンテナー レジストリ" は、イメージ ファイルを格納する場所です。 たとえば、GitHub は、コードの変更とバージョンも格納するコンテナー レジストリです。 docker push コマンドを使用して、新しいアプリケーション イメージをコンテナー レジストリにプッシュできます。

このモジュールでは、前のユニットで作成した Azure Container Registry インスタンスにアプリケーション イメージ ファイルを格納します。 個人用アクセス トークン (PAT) を作成し、フェデレーション証明書を発行して GitHub と Azure で認証した後、パイプラインにより基本的に docker builddocker push コマンドの両方が自動化されます。

CI/CD パイプラインとタグ付けされたコンテナー イメージについて理解したので、次のユニットに進み、GitHub Actions CI/CD パイプラインの構築を開始しましょう。

自分の知識をチェックする

1.

Docker イメージとは何ですか?

2.

CI/CD パイプラインでイメージ タグはどのように使用されますか?