このトピックでは、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 イメージリポジトリからのものです。
WordPress: wordpress:4.9.8-php5.6-apache
MySQL: mysql:5.7
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
MySQL データベースの内部 IP アドレスを取得します。
次の例では、
jq
コマンドを実行して、MySQL データベースの内部 IP アドレスを取得します。オンプレミスデバイスでjq
コマンドが使用できない場合は、最初に jq コマンドセットをインストールする必要があります。eci inspect eci-2zecsa60voctfzr2**** | jq -r .ContainerGroups[0].IntranetIp
予期される出力:
172.16.XX.XX
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 サイトにアクセスします。