Как установить компонент Windows в Docker-контейнере (Windows 2016 Server), который требует «перезагрузки сервера»?

1754
Mathias Conradt

Я пытаюсь установить функцию Windows " NetworkController" в Docker-контейнере на Windows 2016 Server TP4, используя Powershell. После запуска « Add-WindowsFeature NetworkController» я получаю сообщение:

«Вы должны перезагрузить этот сервер, чтобы завершить процесс установки».

Как установить компонент Windows в Docker-контейнере (Windows 2016 Server), который требует «перезагрузки сервера»?

Когда я снова проверяю (еще ничего не делая) с Get-WindowsFeature, он имеет состояние установки «InstallPending».

Как установить компонент Windows в Docker-контейнере (Windows 2016 Server), который требует «перезагрузки сервера»?

Теперь я не уверен, что означает «перезапустить этот сервер» на 100%, но я предполагаю, что это означает, что я должен перезапустить хост-компьютер, поскольку перезапускать больше нечего (а сам контейнер - это просто контейнер, а не виртуальная машина как с подходом Hyper-V).

Поэтому я пробую следующие подходы:

Подход (1)

Я остановил Docker-контейнер с помощью docker stop iisdemo, затем перезапустил хост-компьютер (мой сервер Windows 2016) и затем перезапустил Docker-контейнер, используя docker start iisdemo.

Но когда я проверяю NetworkController, он все еще не установлен.

Как установить компонент Windows в Docker-контейнере (Windows 2016 Server), который требует «перезагрузки сервера»?

Подход (2)

Во второй попытке я добавляю функцию, затем перезагружаю док-контейнер, не перезагружая сервер Windows 2016, просто запускаю

dock restart iisdemo,

Теперь происходит нечто странное, когда я пытаюсь проверить функции с помощью Get-WindowsFeature *network*, процесс сбора данных останавливается на 57%, и контейнер существует сам по себе.

Как установить компонент Windows в Docker-контейнере (Windows 2016 Server), который требует «перезагрузки сервера»?

Когда я снова прикрепляю изображение к докеру:

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

Я вернулся к тому, с чего начал:

Как установить компонент Windows в Docker-контейнере (Windows 2016 Server), который требует «перезагрузки сервера»?

Подход (3)

Другой третий подход, очевидно, не должен работать, но я все равно попробовал его и перезапустил сервер / хост Windows 2016, не останавливая контейнер докера. Излишне говорить, что это тоже не сработало (такое же поведение, как в подходе 1, контейнер завершается на 57% сбора данных).

Подход (4)

Запуск " shutdown -r -f -t 10" внутри контейнера также не помогает. После перезагрузки NetworkControllerон все еще не установлен.


Примечание. Я пытался использовать как контейнеры Docker, так и контейнеры Windows (созданные и управляемые с помощью команд Powershell), без разницы.

4

1 ответ на вопрос

2
Mathias Conradt

Neil Peterson vom Microsoft replied to me on Twitter about this, seems to be a bug: https://twitter.com/nepeters/status/705451007233257472?cn=cmVwbHk%3D&refsrc=email

enter image description here