すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:使用方法のシナリオ

最終更新日:Dec 28, 2024

このトピックでは、Elastic Container Instance (ECI-Client) のコマンドラインインターフェース (CLI) クライアントの使用方法のシナリオについて説明します。

背景情報

クラスターアプリケーションを構築する場合は、Elastic Container Instance を最大限に活用するために、Container Service for Kubernetes (ACK) クラスターまたはACK Serverless クラスターを使用することをお勧めします。ビジネス規模が小さい場合、またはスタンドアロンアプリケーションをいくつかデプロイする場合、ECI-Client を使用すると、Elastic Container Instance をより簡単に使用できます。

ECI-Client は、Docker と同じ構文を使用して、エラスティックコンテナインスタンスを管理します。Docker CLI に精通している場合は、すぐに Elastic Container Instance を使い始めることができます。このトピックでは、ECI-Client の一般的な使用方法のシナリオについて説明します。

コンテナアプリケーションのテスト

Elastic Container Instance に基づいてアプリケーションを開発している場合は、アプリケーションが期待どおりに動作するかどうかを確認するために、エラスティックコンテナインスタンスを頻繁にデプロイする必要がある場合があります。この場合、ECI-Client を使用して、エラスティックコンテナインスタンスを簡単にデプロイできます。

たとえば、centos:8.1.1911 イメージをビルドし、そのイメージを Docker Hub イメージリポジトリにアップロードします。イメージが期待どおりに動作するかどうかをテストするには、ECI-Client で次のコマンドを実行して、エラスティックコンテナインスタンスをデプロイします。

eci run -w 5 centos:8.1.1911 sleep 3600

エラスティックコンテナインスタンスを起動した後、exec コマンドを実行して、インスタンス内のコンテナにログオンできます。インスタンス ID が eci-uf60grb03kz2nlm2**** の場合は、次のコマンドを実行します。

eci exec -ti eci-uf60grb03kz2nlm2**** bash

単純なモデルのトレーニング

次の例では、Python プログラムを含むサンプルイメージを使用します。コンテナを起動すると、プログラムはインターネットからデータをダウンロードし、TensorFlow を使用してデータをトレーニングします。トレーニングされたデータは、/tmp/imagenet ディレクトリに保存されます。

eci run --name test-tensor \
--type ecs.gn6i-c4g1.xlarge \
--gpu 1 \
-w 5 \
--volume /tmp/imagenet \
registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0 \
python /home/classify_image/classify_image.py

TensorFlow プログラムは GPU に依存しています。 --type パラメーターを使用して、エラスティックコンテナインスタンスの Elastic Compute Service (ECS) の GPU アクセラレーションインスタンスタイプを指定する必要があります。また、--gpu パラメーターを使用して、インスタンス内のコンテナに GPU を割り当て、--volume パラメーターを使用して、ディスクをエラスティックコンテナインスタンスにマウントする必要があります。ディスクにはトレーニング結果が保存されます。

エラスティックコンテナインスタンスを起動した後、eci logs コマンドを実行して、TensorFlow プログラムのログ出力を表示できます。インスタンス ID が eci-uf60grb03kz2nlm2**** の場合は、次のコマンドを実行します。

eci logs eci-uf60grb03kz2nlm2****
説明

このイメージはサイズが大きいため、Elastic Container Instance がイメージをダウンロードするには時間がかかります。eci ps コマンドを実行して、エラスティックコンテナインスタンスの ID、名前、およびステータスを表示できます。

個人用 Web サイトのデプロイ

次の例では、ECI-Client を使用して、MySQL データベースを使用する WordPress Web サイトをデプロイします。サンプルイメージは DockerHub イメージリポジトリからのものです。

  1. MySQL データベースをデプロイし、root ユーザーのパスワードを設定します。

    eci run -w 5 --name mysql -e MYSQL_ROOT_PASSWORD=passwd*** -tid mysql:5.7

    コマンドを実行すると、インスタンス ID が生成されます。eci ps コマンドを実行して、インスタンスのステータスを確認できます。インスタンスのステータスが Running に変わると、MySQL データベースがデプロイされます。次の出力が返されます。

    CG_ID                      FIRST_IMAGE   COMMAND     CREATED                     STATUS    PUBLIC_IP        NAME     
    eci-2zecsa60voctfzr2****   mysql:5.7                 2023-02-17T16:33:22+08:00   Running   101.200.XX.XX    mysql  
  2. MySQL データベースの内部 IP アドレスを取得します。

    次の例では、jq コマンドを実行して、MySQL データベースの内部 IP アドレスを取得します。オンプレミスデバイスでjqコマンドが使用できない場合は、最初に jq コマンドセットをインストールする必要があります。

    eci inspect eci-2zecsa60voctfzr2**** | jq -r .ContainerGroups[0].IntranetIp

    予期される出力:

    172.16.XX.XX
  3. WordPress をデプロイします。

    環境変数 -e を使用して、MySQL データベースのアドレス、ユーザー名、およびパスワードを渡すことができます。また、-w を使用して、WordPress Web サイトにパブリック IP アドレスを割り当て、Web サイトの帯域幅を 5 MB に設定することもできます。

    eci run --name wordpress \
    -e WORDPRESS_DB_HOST=172.16.XX.XX \
    -e WORDPRESS_DB_USER=root \
    -e WORDPRESS_DB_PASSWORD=passwd*** \
    -w 5 \
    -tid wordpress:4.9.8-php5.6-apache

    コマンドを実行すると、インスタンス ID が生成されます。eci ps コマンドを実行して、インスタンスのステータスを確認できます。インスタンスのステータスが Running に変わると、WordPress Web サイトがデプロイされます。次の出力が返されます。

    CG_ID                      FIRST_IMAGE                     COMMAND   CREATED                     STATUS    PUBLIC_IP        NAME     
    eci-2zeedp8bxor356b7****   wordpress:4.9.8-php5.6-apache             2023-02-17T16:39:51+08:00   Running   101.200.XX.XX    wordpress
    eci-2zecsa60voctfzr2****   mysql:5.7                                 2023-02-17T16:33:22+08:00   Running   101.200.XX.XX    mysql

    出力に WordPress Web サイトのパブリック IP アドレスが表示されます。この例では、パブリック IP アドレスは 101.200.XX.XX です。ブラウザに http://100.100.XX.XX と入力して、WordPress Web サイトにアクセスします。