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

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

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

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

在此处输入图片描述

当我现在再次使用 Get-WindowsFeature 检查(尚未执行任何其他操作)时,它的安装状态为“InstallPending”。

在此处输入图片描述

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

因此我尝试了以下方法:

方法(1)

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

但是当我检查网络控制器时,它仍然没有安装。

在此处输入图片描述

方法(2)

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

dock restart iisdemo

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

在此处输入图片描述

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

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

我又回到了起点:

在此处输入图片描述

方法(3)

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

方法 (4)

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


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

答案1

Neil Peterson vom Microsoft 在 Twitter 上回复了我这个问题,似乎是个 bug:https://twitter.com/nepeters/status/705451007233257472?cn=cmVwbHk%3D&refsrc=email

在此处输入图片描述

相关内容