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 IDDocker Image
ami-03b184a4646875b51mcr.microsoft.com/windows/servercore:ltsc2016
ami-01c65e7a6c38f2fb2mcr.microsoft.com/windows/servercore:ltsc2019

タスク定義に制限が多い

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

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

コンテナ側ホスト側
c:\tmpc:\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は、Amazon ECSに最適化されたWindows Server AMIで起動されるコンテナ インスタンスで Windows コンテナをサポートするようになりました。
Amazon EC2 Windows タスク定義の考慮事項 - Amazon Elastic Container Service
以下のパラメータは、Amazon EC2 での Windows タスク定義ではサポートされていません。

コメント

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