gMSA を使用するようにアプリを構成する
適用対象: Windows Server 2025、Windows Server 2022、Windows Server 2019
一般的な構成では、コンテナー には、コンテナー コンピューター アカウントがネットワーク リソースに対して認証を試みるたびに使用されるグループ管理サービス アカウント (gMSA) が 1 つだけ与えられます。 つまり、gMSA ID を使用する必要がある場合は、アプリ ローカル システム または Network Service として実行する必要があります。 コンテナー内のサービスまたはアプリケーションをコンテナー コンピューター アカウントとは異なる ID として実行する場合は、追加の gMSA を使用してコンテナーを構成することもできます。
IIS アプリ プールをネットワーク サービスとして実行する
コンテナーで IIS Web サイトをホストしている場合、gMSA を利用するために必要な操作は、アプリ プール ID を Network Serviceに設定することです。 これを Dockerfile で行うには、次のコマンドを追加します。
RUN %windir%\system32\inetsrv\appcmd.exe set AppPool DefaultAppPool -'processModel.identityType':NetworkService
以前に IIS アプリ プールに静的ユーザー資格情報を使用していた場合は、それらの資格情報の代わりに gMSA を使用することを検討してください。 開発、テスト、運用環境の間で gMSA を変更できます。IIS では、コンテナー イメージを変更しなくても、現在の ID が自動的に取得されます。
ネットワーク サービスとして Windows サービスを実行する
コンテナー化されたアプリが Windows サービスとして実行されている場合は、Dockerfile でネットワーク サービス 実行するようにサービスを設定できます。
RUN sc.exe config "YourServiceName" obj= "NT AUTHORITY\NETWORK SERVICE" password= ""
任意のコンソール アプリをネットワーク サービスとして実行する
IIS または Service Manager でホストされていない汎用コンソール アプリの場合、多くの場合、コンテナーをネットワーク サービス として 実行するのが最も簡単であるため、アプリは gMSA コンテキストを自動的に継承します。 この機能は、Windows Server バージョン 1709 以降で使用できます。
Dockerfile に次の行を追加して、既定でネットワーク サービスとして実行します。
USER "NT AUTHORITY\NETWORK SERVICE"
docker exec
を使用して、1 回限りのネットワーク サービスとしてコンテナーに接続することもできます。 これは、コンテナーがネットワーク サービスとして通常実行されない場合に、実行中のコンテナーの接続の問題をトラブルシューティングする場合に特に便利です。
# Opens an interactive PowerShell console in the container (id = 85d) as the Network Service account
docker exec -it --user "NT AUTHORITY\NETWORK SERVICE" 85d powershell
関連コンテンツ
アプリの構成に加えて、gMSA を使用して次のことができます。
- コンテナー を実行する
- コンテナーのオーケストレーション
セットアップ中に問題が発生した場合は、トラブルシューティング ガイドの で考えられる解決策を確認してください。