Amazon ECSでWindowsコンテナを使用するときの注意点

Amazon ECSでWindowsコンテナを使用するときの注意点

ECSでWindowsコンテナを使用してECSタスクスケジューリングをする場合(バッチ処理)、EC2インスタンスもWindowsである必要があります。Dockerイメージも同じWindowsである必要があります。

Linuxと勝手がかなり違い、手間取ったのでメモです。

ホストOSとコンテナOSのカーネルは共有される

カーネルが共有されるため、異なるカーネルでタスク実行すると失敗します。

a Windows version 10.0.17763-based image is incompatible with a 10.0.14393 host

ここで結構つまづいたのですが以下で動作すること確認しました。

AMI ID Docker Image
ami-03b184a4646875b51 mcr.microsoft.com/windows/servercore:ltsc2016
ami-01c65e7a6c38f2fb2 mcr.microsoft.com/windows/servercore:ltsc2019

タスク定義に制限が多い

公式ドキュメントを見ればわかる通りですが、Linuxに比べタスク定義のパラメータに制限多すぎます。

Windowsでディレクトリ共有をするために、ホスト側とコンテナ側で同じドライブである必要があったりするようです。

コンテナ側 ホスト側
c:\tmp c:\tmp

この件で実際試したところ、全く同じディレクトリ構成をマウントすればディレクトリ共有することは出来ました。

Amazon ECSでWindowsコンテナを使用するときの注意点

Amazon ECSでWindowsコンテナを使用するときの注意点

CannotStartContainerError: Error response from daemon: container xxx encountered an error during hcsshim::System::Start: context deadline exceeded

CPUユニット数を空白設定してしまうと0扱いになる為、コンテナスタートできない旨のエラーが出ます。

Exe実行時のエントリポイント

エントリポイント:powershell,-Command

コマンド:フルパスでExeを指定

Amazon ECSでWindowsコンテナを使用するときの注意点

これで実行OKです。

参考サイト

Amazon EC2 Windows コンテナ - Amazon Elastic Container Service
Amazon ECSでは、AWS Fargate の Amazon ECS 最適化 Windows Server AMI で起動されるコンテナインスタンスの Windows コンテナをサポートするようになりました。AWS Fargate の...
Amazon EC2 Windows タスク定義の考慮事項 - Amazon Elastic Container Service
以下のパラメータは、Amazon EC2 での Windows タスク定義ではサポートされていません。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました