web-dev-qa-db-ja.com

「サーバーの再起動」が必要なDockerコンテナー(Windows 2016 Server)にWindows機能をインストールするにはどうすればよいですか?

Powershellを使用して、Windows 2016 ServerTP4のDockerコンテナーにWindows機能「NetworkController」をインストールしようとしています。 「Add-WindowsFeature NetworkController」を実行すると、次のメッセージが表示されます。

「インストールプロセスを完了するには、このサーバーを再起動する必要があります。」

enter image description here

Get-WindowsFeatureを使用して(まだ何もしなくても)再度確認すると、インストール状態は「InstallPending」になっています。

enter image description here

「このサーバーを再起動する」が100%を意味するかどうかはわかりませんが、再起動するものが他にないため、ホストマシンを再起動することになっていると思います(コンテナ自体は単なるコンテナであり、VM Hyper-Vアプローチと同様)。

だから私は次のアプローチを試してみます:

アプローチ(1)

docker stop iisdemoを使用してDockerコンテナーを停止し、ホストマシン(Windows 2016サーバー)を再起動してから、docker start iisdemoを使用してDockerコンテナーを再起動します。

しかし、NetworkControllerを確認しても、まだインストールされていません。

enter image description here

アプローチ(2)

2回目の試行では、機能を追加してから、Dockerコンテナーを再起動しますを実行せずに、Windows2016サーバーを再起動します

dock restart iisdemo

Get-WindowsFeature *network*を介して機能をチェックしようとすると、データ収集プロセスが57%で停止し、コンテナーが単独で存在するという奇妙なことが起こります。

enter image description here

Dockerイメージに再度アタッチすると、次のようになります。

> docker start iisdemo
> docker attach iisdemo
> powershell
> Get-WindowsFeature *network*

私は始めたところに戻っています:

enter image description here

アプローチ(3)

別の3番目のアプローチは明らかに機能しないはずですが、とにかくそれを試し、Dockerコンテナーをまったく停止せずにWindows2016サーバー/ホストを再起動しました。言うまでもなく、これも機能しませんでした(アプローチ1と同じ動作で、コンテナーはデータ収集の57%で終了します)。

アプローチ(4)

コンテナ内で「shutdown -r -f -t 10」を実行しても役に立ちません。再起動後も、NetworkControllerはインストールされていません。


注:DockerコンテナーとWindowsコンテナー(Powershellコマンドで作成および管理)の両方を使用しようとしましたが、違いはありません。

5
Mathias Conradt

Neil Peterson vom MicrosoftがTwitterでこれについて返信しましたが、これはバグのようです: https://Twitter.com/nepeters/status/705451007233257472?cn=cmVwbHk%3D&refsrc=email

enter image description here

3
Mathias Conradt