最終更新日: 2020 年 3 月 10 日午前 10:00 PST
現象
コンテナー ホストまたはコンテナー イメージに 2020 年 2 月 11 日のセキュリティ更新プログラムが含まれている場合、Windows コンテナー ホストとWindows Server コンテナー イメージの両方が 2020 年 2 月 11 日のセキュリティ更新プログラムと一致しない限り、Windows Server コンテナーの使用時に問題が発生する可能性があります。
コンテナーを実行または構築する場合の現象には、次のようなものがあります。
-
コマンド「docker run」または「docker build」を実行すると、出力が表示されず、応答しなくなる可能性があります。
-
Kubernetes の Windows サーバー コンテナーが 「実行中」状態に達していません。
-
次のエラーが表示されます。「docker: デーモンからのエラー応答: コンテナー <id> が Start 中にエラーを検出しました: Windows システム コールの失敗: 待ち操作がタイムアウトになりました。 (0x102)。」
-
コンテナー内で実行されている 32 ビットのアプリケーションまたはプロセスは、サイレントに失敗する可能性があります。
原因
この問題は、ユーザー モードとカーネル モードの間でインターフェイスを変更する必要があるセキュリティの変更の結果です。 プロセス分離コンテナーは、カーネル モードをコンテナー ホストとコンテナー イメージと共有するため、更新プログラムが含まれていないユーザー モード コンポーネントは、新しいセキュリティで保護されたカーネル インターフェイスと互換性がなく、セキュリティで保護されていませんでした。
解決策と回避策
Windows コンテナー ドキュメント サイトの Windows コンテナーのバージョンの互換性と Windows Server コンテナーの更新セクションに新しい更新ガイダンスを追加しました。 これには、更新プログラムの互換性とマトリックスの詳細も含まれます。 この記事に記載されている特定の問題については、以下の解決策と緩和策を参照してください。
「実行されていない」と「32 ビット アプリケーションがサイレントに失敗する」問題 (現象 1、2、3、4) の解決策:
2020 年 2 月 18 日に、この記事の現象 (1、2、3、4) に関する問題を修正するために、更新されたコンテナー イメージがリリースされました。 これらの問題が発生する場合は、2020 年 2 月 11 日のセキュリティ更新プログラムのリリースと 2020 年 2 月 18 日にリリースされたコンテナー イメージにコンテナー ホストを更新することをお勧めします。 注: 2020 年 2 月 18 日リリースは、コンテナー イメージ専用です。 2020 年 2 月 11 日のセキュリティ更新プログラムは、コンテナー ホストの最新の更新プログラムです。
環境内の問題を解決するには、プル コマンドを再実行して Windows Server ベース OS イメージまたは IIS や .NET などの該当するコンテナー イメージを更新し、オートメーション パイプラインを再実行して、2020 年 2 月 18 日コンテナー イメージを持つコンテナー イメージを介してコンテナーを再構築します。
重要: この記事の問題の回避策としてプル タグまたはオートメーションを変更した場合は、以前のプル タグに対する変更を元に戻す必要があります。 特定のバージョンを使用する必要がなくなります。
「32 ビット アプリケーションがサイレントに失敗する」問題 (現象 4) の軽減策:
上記のように、コンテナー ホストを 2020 年 2 月 11 日のセキュリティ更新プログラムに更新することを強くお勧めします。 2020 年 2 月 11 日のセキュリティ更新プログラムにコンテナー ホストを更新できない場合は、コンテナー イメージのビルドバージョンとリビジョン バージョンを、コンテナー ホスト オペレーティング システムのビルドバージョンとリビジョン バージョンに一致させる必要があります。 コンテナー ホストのバージョンを確認する方法については、こちらの記事を参照してください。 コンテナー ホストからバージョンを取得したら、次のコマンドを使用してコンテナー イメージのバージョンをプルできます (環境に適用されるように Windows Server ベースの OS イメージとバージョンを調整する必要があります)。 たとえば、Windows Server Core コンテナーを使用している場合は、次のようになります。
docker pull mcr.microsoft.com/windows/servercore:<version your container host, such as 10.0.17763.1040>
コンテナー ホストとコンテナー イメージのバージョンが一致すると、実行やビルドなどのコンテナー コマンドを再開できるようになります。
注: サイレントに失敗するアプリが発生している場合にのみ、プル タグまたはオートメーションを変更することをお勧めします。
関連情報
以下のリストは、コンテナー イメージをサポートする Windows Server のバージョンと、2020 年 1 月 14 日および 2020 年 2 月 11 日にリリースされたセキュリティ更新プログラムのバージョン番号と、2020 年 2 月 18 日にのみリリースされたコンテナー イメージを示しています。 フローティング タグでバージョンを指定しないと、2020 年 2 月 18 日にリリースされたコンテナー イメージが自動的にプルされます。
Windows Server のバージョン (フローティング タグ) |
2020 年 1 月 14 日リリースの更新プログラム バージョン |
2020 年 2 月 11 日の更新プログラム バージョン |
2020 年 2 月 18 日の更新プログラム バージョン |
Windows Server 2016 (ltsc2016) |
10.0.14393.3443 |
10.0.14393.3504 |
10.0.14393.3506 |
Windows Server Version 1803 (1803) |
10.0.17134.1246 |
10.0.17134.1304 |
10.0.17134.1305 |
Windows Server 2019 (ltsc2019) Windows Server Version 1809 (1809) |
10.0.17763.973 |
10.0.17763.1039 |
10.0.17763.1040 |
Windows Server Version 1903 (1903) |
10.0.18362.592 |
10.0.18362.657 |
10.0.18362.658 |
Windows Server Version 1909 (1909) |
10.0.18363.592 |
10.0.18363.657 |
10.0.18363.658 |
コンテナーで Azure Marketplace 仮想マシン イメージを使用している場合は、2020 年 2 月のイメージが現在利用可能です。 これらのイメージを使用して上記の問題や現象が発生しないようにしてください。 詳細については、KB4540981 を参照してください。
Windows コンテナー イメージの完全なリストについては、こちらの Docker Hub ページを参照してください。
Windows サーバー コンテナーの詳細については、https://aka.ms/containers を参照してください。