如何在需要“服务器重启”的 Docker 容器(Windows 2016 Server)上安装 Windows 功能?

Mat*_*adt 5 powershell container docker windows-server-2016

我尝试NetworkController使用 Powershell 在 Windows 2016 Server TP4 上的 docker 容器上安装 Windows 功能“ ”。运行“ Add-WindowsFeature NetworkController”后,我收到消息:

“您必须重新启动此服务器才能完成安装过程。”

在此处输入图片说明

当我现在使用 Get-WindowsFeature 再次检查(还没有做任何其他事情)时,它的安装状态为“InstallPending”。

在此处输入图片说明

现在我不确定“重新启动此服务器”是什么意思 100%,但我想这意味着我应该重新启动主机,因为没有其他东西可以重新启动(并且容器本身只是一个容器,而不是虚拟机)使用 Hyper-V 方法)。

所以我尝试以下方法:

方法 (1)

我使用 停止 docker 容器docker stop iisdemo,然后重新启动主机(我的 Windows 2016 服务器),然后使用docker start iisdemo.

但是当我检查 NetworkController 时,它仍然没有安装。

在此处输入图片说明

方法 (2)

在第二次尝试中,我添加了该功能,然后重新启动 docker 容器而不重新启动 Windows 2016 服务器,只需运行

dock restart iisdemo.

现在发生了一些奇怪的事情,当我尝试通过 来检查特征时Get-WindowsFeature *network*,收集数据的过程停止在 57% 并且容器本身存在。

在此处输入图片说明

当我再次附加到 docker 镜像时:

> docker start iisdemo
> docker attach iisdemo
> powershell
> Get-WindowsFeature *network*
Run Code Online (Sandbox Code Playgroud)

我回到了我开始的地方:

在此处输入图片说明

方法 (3)

另一种第三种方法显然不起作用,但我还是尝试了它并重新启动了 Windows 2016 服务器/主机,而根本没有停止 docker 容器。不用说,这也不起作用(与方法 1 的行为相同,容器在收集数据的 57% 时退出)。

方法 (4)

shutdown -r -f -t 10在容器内运行“ ”也无济于事。重启后,NetworkController还是没有安装。


注意:我尝试同时使用 Docker 容器和 Windows 容器(通过 Powershell 命令创建和管理),没有区别。

Mat*_*adt 3

Neil Peterson vom 微软在 Twitter 上回复我此事,似乎是一个错误:https://twitter.com/nepeters/status/705451007233257472 ?cn=cmVwbHk%3D&refsrc=email

在此输入图像描述