Привет-мир контейнер 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

Что сработало:

Что не имеет:

Запуск любого контейнера. Мы попробовали несколько:

  • 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и теперь мы можем успешно запускать произвольные контейнеры.

Другие вопросы по тегам