Какие образы я должен использовать для Windows в Windows с Docker EE в Windows 2016 - PullRequest
0 голосов
/ 27 июня 2019

Я уже некоторое время занимаюсь разработкой и обслуживанием некоторых окон в контейнерах Docker для Windows, которые запускают основные приложения ASP.NET в Windows 2016 (с использованием Docker EE). Я планировал передать все текущие обновления / обслуживание администраторам серверов, но столкнулся с проблемой. Когда я начинал, я полагал, что использую сборки SAC, но сейчас ни одна из сборок SAC (или LTS в этом отношении) не использует Windows 2016, и, хотя я потратил много времени на поиск в Google, все это кажется большим кластер. С докером в Linux я бы просто использовал любой дистрибутив LTS и применял обновления при сборке контейнера. Есть ли у Microsoft четкий план сделать то же самое? Кажется, что они упускают точку докера. Я хочу запустить контейнер Windows на Windows-сервере в Windows Server 2016 и хочу, чтобы при его повторном создании я получал последние обновления безопасности.

https://devblogs.microsoft.com/dotnet/net-core-container-images-now-published-to-microsoft-container-registry/

На этой странице рассказывается о больших изменениях, внесенных в изображения Docker в последнее время, и в частности говорится следующее:

.NET Core образы для Nano Server 2016 по-прежнему доступны в Docker Hub и MCR и не будут удалены. Вы можете продолжать использовать их, но они не поддерживаются и не будут получать новые обновления. Если вам нужно сделать это и использовать ранее использованные теги манифеста, например 1.1-sdk, теперь вы можете использовать следующие теги MCR (варианты Docker Hub похожи)

Означает ли это, что перечисленные новые теги получают обновления? Я предположил бы, что они пометят это с LTS вместо SAC2016, чтобы лучше передать идею, что они продолжают обновлять.

Эта страница кажется очень полезной, но ни одно из перечисленных изображений не работает на Windows Server 2016: https://andrewlock.net/exploring-the-net-core-mcr-docker-files-runtime-vs-aspnet-vs-sdk/

Вот что я получаю, когда пытаюсь вытащить любое из изображений:

1709: Pulling from windows/nanoserver
no matching manifest for unknown in the manifest list entries

Чтобы уточнить, в настоящее время я могу запускать все свои приложения, используя такие образы, как эти:

mcr.microsoft.com/dotnet/core/runtime        2.2-nanoserver-sac2016   4a3bbafea836        3 months ago        1.27GB
mcr.microsoft.com/dotnet/core/sdk            2.2-nanoserver-sac2016   9773d80bdd64        3 months ago        2.62GB

Я ищу ясности в отношении поддержки этих изображений или более четкого направления миграции.

Ответы [ 2 ]

1 голос
/ 28 июня 2019

https://github.com/docker/for-win/issues/3761

Я работал около 12 марта, когда все тяги докера перестали работать из-за изменений, которые сделала MS. Так что я уверен, что видел эту страницу раньше, но после перечитывания всего текста, я вижу этот комментарий:

docker pull mcr.microsoft.com/windows/servercore:ltsc2016

Это похоже на разумное имя тега для долгосрочной поддержки. И вот, это работает. В настоящее время я теоретизирую, что наносервер предназначен только для самых последних и самых выдающихся разработок, и подумываю открыть вопрос на github, чтобы узнать, ответит ли кто-нибудь на этот вопрос окончательно.

Я думаю, что один из комментариев на этой странице от сопровождающего github разрешает спор в ответе Криса Пратта. Я думаю, что неверная информация о безопасности опасна, поэтому я делаю репост здесь, чтобы помочь будущим душам, которые наткнулись на этот вопрос:

Да, при работе с изоляцией процессов версия должна соответствовать версии ядра Windows, на которой вы работаете. В отличие от Linux, ядро ​​Windows не имеет стабильного API, поэтому образы контейнеров, работающие в Windows, должны иметь библиотеки, которые соответствуют ядру, в котором они будут работать, чтобы заставить его работать (именно поэтому эти образы намного больше, чем образы Linux) ).

Уязвимые библиотеки в контейнере Docker имеют значение. Вы не можете полагаться на то, что операционная система хоста обновлена ​​и защищает вас.

Дальнейшие исследования

Все еще исследую это, поэтому добавляю мои обновления в вашу пользу, когда я их нахожу:

Статья о миграции

https://www.altaro.com/hyper-v/nano-server-no-longer-supported-for-infrastructure/

TLDR - перейти на серверное ядро ​​

Server 2016 14393 Теги на Docker Hub

На главной странице нано-сервера Docker-концентратора нет 14393 тегов, но посещение полного списка тегов внизу страницы показывает много. Я смог вытащить mcr.microsoft.com/windows/nanoserver:10.0.14393.1066, и это всего 1 ГБ вместо 14 ГБ для ядра сервера

1 голос
/ 27 июня 2019

Прямо сейчас, для LTS, изображение, которое вы хотите получить: mcr.microsoft.com/dotnet/core/aspnet:2.1. Начиная с версии 2.1 выпущена версия LTS ASP.NET Core. Честно говоря, ссылка на базовый сервер не имеет значения, и все образы .NET Core являются многоархитивными, поэтому правильные базовые образы извлекаются автоматически (linux для хоста linux, Windows для хоста Windows и AMD64, x86, ARM и т. Д. .).

ОС образа (кроме правильной архитектуры и платформы) действительно бессмысленна. В основном это слой перевода. Образы не являются виртуальными машинами, ОС находится на хосте, и именно здесь применяются ваши патчи безопасности и тому подобное. Пока ваш хост исправлен, у вас все хорошо.

UPDATE

Это, очевидно, привело к некоторым педантичным аргументам в комментариях, поэтому позвольте мне быть немного более ясным. То, о чем я здесь говорю, лучше всего описать с помощью этой графики с сайта Docker :

Containers vs. Virtual Machines

В то время как виртуальная машина имеет копию ОС в каждом экземпляре, контейнеры используют общую хост-ОС. Базовый образ ОС в основном прокси. Он предоставляет API, но все на уровне ОС происходит в операционной системе хоста, а не в контейнере.

Как таковой, да, базовый образ ОС имеет значение в определенной степени . Вы не можете настроить целевой образ Linux и развернуть его на Windows Server. У вас также могут возникнуть проблемы с настройкой Windows Server 2019 и развертыванием до 2016 года. Однако если предположить, что базовый образ ОС удаленно совместим с хост-ОС, то все, что выше и далее, не имеет смысла.

В частности, при обсуждении исправлений и версий LTS вам не нужно заботиться, потому что опять-таки на самом деле работают компоненты операционной системы, а не что-либо из самого образа. Вы действительно можете увидеть это, если откроете диспетчер задач на хост-компьютере Вы увидите дубликаты процессов системного уровня, привязанные к каждому работающему контейнеру. Несмотря на то, что контейнер также показывает запущенные процессы, именно эти процессы уровня хоста фактически выполняют эту работу, и поэтому важно, чтобы они были исправлены и поддержаны. Если на вашем хосте все хорошо, вам не нужно беспокоиться о контейнерах, по крайней мере, в части ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...