チュートリアル:Azure Container Instances へのデプロイに使用するコンテナー イメージを作成する
Azure Container Instances では、仮想マシンをプロビジョニングしたり、上位レベルのサービスを採用したりせずに、Azure のインフラストラクチャ上に Docker コンテナーをデプロイすることができます。 このチュートリアルでは、小さな Node.js Web アプリケーションを、Azure Container Instances を使用して実行できるコンテナー イメージにパッケージ化します。
シリーズの第 1 部となるこの記事では、次の内容を学習します。
- GitHub からアプリケーション ソース コードを複製する
- アプリケーション ソースからコンテナー イメージを作成する
- ローカル Docker 環境でイメージをテストする
チュートリアルのパート2 およびパート 3 では、Azure Container Registry にイメージをアップロードした後、Azure Container Instances にデプロイします。
始める前に
このチュートリアルを完了するには、次の要件を満たす必要があります。
Azure CLI:ローカル コンピューターに Azure CLI バージョン 2.0.29 以降がインストールされている必要があります。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。
Docker:このチュートリアルの前提として、コンテナー、コンテナー イメージ、基本 docker
コマンドなど、Docker のコア概念を基本的に理解している必要があります。 Docker やコンテナーの基礎に関する入門情報については、「Docker overview」(Docker の概要) を参照してください。
Docker:このチュートリアルを完了するには、Docker がローカル環境にインストールされている必要があります。 Docker には、macOS、Windows、Linux 上で Docker 環境の構成を行うパッケージが用意されています。
重要
Azure Cloud Shell には Docker デーモンが含まれていないため、このチュートリアルを完了するためには、Azure CLI と Docker エンジンの両方を自分でローカル コンピューターにインストールする必要があります。 このチュートリアルで Azure Cloud Shell を使用することはできません。
アプリケーションのコードを入手する
このチュートリアルのサンプル アプリケーションは、Node.js で構築した単純な Web アプリです。 このアプリケーションは、次のスクリーンショットに示したような静的 HTML ページを返します。
次のように、Git を使ってサンプル アプリケーションのリポジトリを複製します。
git clone https://github.com/Azure-Samples/aci-helloworld.git
GitHub から直接 ZIP アーカイブをダウンロードすることもできます。
コンテナー イメージを構築する
サンプル アプリケーションに含まれる Dockerfile は、コンテナーの構築方法を示しています。 その方法は、Alpine Linux に基づく公式 Node.js イメージから始まります。これは、コンテナーで使用するのに適した小規模なディストリビューションです。 次に、アプリケーション ファイルをコンテナーにコピーし、ノード パッケージ マネージャーを使用して依存関係をインストールして、最後にアプリケーションを起動します。
FROM node:8.9.3-alpine
RUN mkdir -p /usr/src/app
COPY ./app/* /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
CMD node /usr/src/app/index.js
docker build コマンドを使用してコンテナー イメージを作成し、これを aci-tutorial-app としてタグ付けします。
docker build ./aci-helloworld -t aci-tutorial-app
docker build コマンドの出力は次のようになります (わかりやすくするために切り詰められています)。
docker build ./aci-helloworld -t aci-tutorial-app
Sending build context to Docker daemon 119.3kB
Step 1/6 : FROM node:8.9.3-alpine
8.9.3-alpine: Pulling from library/node
88286f41530e: Pull complete
84f3a4bf8410: Pull complete
d0d9b2214720: Pull complete
Digest: sha256:c73277ccc763752b42bb2400d1aaecb4e3d32e3a9dbedd0e49885c71bea07354
Status: Downloaded newer image for node:8.9.3-alpine
---> 90f5ee24bee2
...
Step 6/6 : CMD node /usr/src/app/index.js
---> Running in f4a1ea099eec
---> 6edad76d09e9
Removing intermediate container f4a1ea099eec
Successfully built 6edad76d09e9
Successfully tagged aci-tutorial-app:latest
docker images コマンドを使用して、構築されたイメージを確認します。
docker images
新しく構築したイメージがリストに表示されます。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
aci-tutorial-app latest 5c745774dfa9 39 seconds ago 68.1 MB
コンテナーをローカルで実行する
Azure Container Instances にコンテナーをデプロイする前に、docker run を使ってローカルでコンテナーを実行し、コンテナーが動作することを確認します。 -d
スイッチを使用すると、コンテナーをバックグラウンドで実行できます。一方、-p
スイッチでは、コンピューター上の任意のポートをコンテナーのポート 80 にマップすることができます。
docker run -d -p 8080:80 aci-tutorial-app
docker run
コマンドが成功した場合、コマンドからの出力に、実行中のコンテナーの ID が表示されます。
docker run -d -p 8080:80 aci-tutorial-app
```output
a2e3e4435db58ab0c664ce521854c2e1a1bda88c9cf2fcff46aedf48df86cccf
今度は、ブラウザーで http://localhost:8080
に移動し、コンテナーが実行されていることを確認します。 次のような Web ページが表示されます。
次の手順
このチュートリアルでは、Azure Container Instances にデプロイできるコンテナー イメージを作成し、ローカルで実行されていることを確認しました。 ここで行った作業は次のとおりです。
- GitHub からのアプリケーション ソースの複製
- アプリケーション ソースからのコンテナー イメージの作成
- コンテナーのローカルでのテスト
シリーズの次のチュートリアルに進んで、Azure Container Registry にコンテナー イメージを格納する方法について学習します。