Привет-мир контейнер Docker не будет запускаться на Windows Server 2016 поверх VMWare
Я пытался установить и запустить Docker на виртуальной машине Windows, чтобы лучше понять время выполнения для последующей работы, и я сталкиваюсь с проблемами, начинающими hello-world
контейнер.
Среда:
- Виртуальное оборудование VMWare:
- 4 ГБ ОЗУ
- Процессор Intel Xenon (2 ядра)
- Windows Server 2016 Standard (версия 1607)
- Некоторые соображения относительно антивируса и брандмауэра (я получаю больше информации о них)
Выход из docker version
:
Client:
Version: 17.06.2-ee-6
API version: 1.30
Go version: go1.8.3
Git commit: e75fdb8
Built: Mon Nov 27 22:46:09 2017
OS/Arch: windows/amd64
Server:
Version: 17.06.2-ee-6
API version: 1.30 (minimum version 1.24)
Go version: go1.8.3
Git commit: e75fdb8
Built: Mon Nov 27 22:55:16 2017
OS/Arch: windows/amd64
Experimental: false
Что сработало:
- Загрузка и установка пакета Docker, следуя сценарию установки, разверните путь от docs.docker.com
- Запуск самого демона Docker.
- Загрузка слоев для
hello-world
образ.
Что не имеет:
Запуск любого контейнера. Мы попробовали несколько:
hello-world:nanoserver
hello-world:latest
microsoft/nanoserver:latest
microsoft/windowsservercore:latest
Что я уже пробовал (безуспешно):
- Расслабление наших настроек групповой политики
- Включение дополнительного компонента Hyper-V Windows
Что на самом деле происходит:
Когда я пытаюсь запустить контейнер с помощью docker run {container-name-here}
PowerShell зависает значительное время (пару минут) и выдает следующее сообщение:
C:\Program Files\docker\docker.exe: Error response from daemon: container
{container-id-here} encountered an error during Start: failure in a
Windows system call: This operation returned because the timeout
period expired. (0x5b4).
в docker events
войти, я получаю следующие сообщения одновременно:
2018-04-18T09:36:27.881680400-04:00 container create {container-id-here} (image=hello-world:nanoserver, name=confident_ardinghelli)
2018-04-18T09:36:27.883680800-04:00 container attach {container-id-here} (image=hello-world:nanoserver, name=confident_ardinghelli)
2018-04-18T09:36:28.753726900-04:00 network connect {network-id-here} (container={container-id-here}, name=nat, type=nat)
2018-04-18T09:40:21.373395500-04:00 network disconnect {network-id-here}(container={container-id-here}, name=nat, type=nat)
Мы получаем сообщение о тайм-ауте между network connect
и network disconnect
,
Ссылки, которые я нашел в моем поиске ( здесь и здесь), указывают, что это может быть проблема с антивирусом, но я не смог найти никакой документации о том, как подтвердить, что это проблема с антивирусом или какой антивирусный компонент может быть проблема, кроме отключения антивируса и повторной попытки. Я работаю с людьми, которые имеют доступ к этой части системы, и пытаюсь снова, я обновлю результаты.
Итак, что я на самом деле спрашиваю?
- Кто-нибудь еще видел эту или подобную проблему раньше? Какие шаги вы смогли предпринять, чтобы диагностировать первопричину, и что в итоге оказалось проблемой в вашем случае?
- Существуют ли какие-либо другие журналы Docker или Windows, на которые я должен обратить внимание, чтобы лучше диагностировать причину проблемы?
- Любые другие "выстрелы в темноте" мы должны попробовать? У нас заканчиваются идеи после того, как мы пройдем отладку безопасности.
Обновление (2018-4-20):
Мы поговорили с командой безопасности и обсудили включение и отключение различных антивирусных компонентов. Когда мы отключили McAfee Host IPS (HIPS), мы смогли запустить любой из наших контейнеров, как и ожидалось. Когда мы снова включаем его, контейнеры снова ломаются! Мы нашли предупреждение в журнале HIPS об отказе в чтении реестра, которое по времени совпадает с нашим сеансом отладки, и мы проследили этот доступ к реестру до процесса docker.exe с помощью Process Monitor от Microsoft Sysinternals. Похоже, у нас есть наш преступник!
Я сообщу об этом после того, как мы добавим запись в белый список для правила и подтвердим исправление.
1 ответ
Решение
В этом случае McAfee Host Intrusion Prevention Service (HIPS) была проблема, препятствующая запуску Docker. McAfee HIPS предоставляет ряд правил мониторинга вторжений, и одно из них предотвращает необоснованный доступ к реестру. Мы отключили правило для docker.exe
и это было гладко с тех пор!
Шаги для отладки
Мы определили это, отладив Docker, отключив отдельные компоненты безопасности, пока docker не смог функционировать, а затем снова включив все, кроме HIPS, чтобы убедиться, что больше ничего не мешает. Затем мы снова включили HIPS, воспроизвели проблему и проверили журналы HIPS на наличие предупреждений, соответствующих по времени.
Интерфейс командной строки Docker пытался получить доступ к следующим разделам реестра и получил отказ в доступе:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\docker.exe
Мы использовали Process Monitor от Microsoft Sysinternals, чтобы убедиться, что доступ к реестру был связан с docker.exe.
Наконец, мы отключили это правило HIPS для docker.exe
и теперь мы можем успешно запускать произвольные контейнеры.