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です。

参考サイト

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ECS_Windows.html

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/windows_task_definitions.html

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA