Можно ли размещать контейнеры Windows в linux?

возможно ли это запустить Контейнеры Windows on Linux? Сценарий основан на решении, написанном в .NET (старая сеть) и пользователей Linux который хочет запустить это с Докером, чтобы предоставить net462 написанный API на localhost.

Я использую бета-версию от Docker для windows

Если нет, то почему windows может запускать контейнеры linux, а не наоборот?

EDIT:

Как прошло некоторое время и этот вопрос популярный. Я хотел бы добавить здесь одно замечание, что обходной путь-использовать новый netstandard. Это позволило мне упаковать 4.6.2 framework в новую библиотеку.

6 ответов


обновление 2: 08.2018 Если вы используете Docker-for-Windows, Теперь вы можете запускать контейнеры windows и linux одновременно: https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows-and-linux-containers-simultaneously/

бонус: не имеет прямого отношения к вопросу, но теперь вы можете запустить не только сам контейнер linux, но и orchestrator как kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-available-in-docker-desktop-stable-channel/

Обновлено 2018:

оригинальный ответ в целом правильный, но несколько месяцев назад, докер добавили экспериментальная функция LCOW (официальный репозиторий github).

с этот пост:

Не Docker для Windows уже запускает Linux контейнеры? Вот именно. Docker для Windows может запускать контейнеры Linux или Windows с поддержкой для контейнеров Linux через VM Hyper-V Moby Linux (с Docker для Windows 17.10 эта виртуальная машина основана на LinuxKit).

настройка для запуска контейнеров Linux с LCOW намного проще, чем предыдущая архитектура где виртуальная машина Hyper-V Linux запускает Докер Linux Деймон, вместе со всеми твоими контейнерами. С lcow, демон Docker запускается как процесс Windows (то же самое как при запуске Docker Windows containers), и каждый раз, когда вы запускаете Докер контейнеров Linux запускает минимальный гипервизор Hyper-V под управлением виртуальной машины с Linux ядро, runc и контейнерные процессы, запущенные сверху.

потому что есть только один демон Docker, и потому что этот демон сейчас работает на Windows, it скоро можно будет запускать Windows и Linux Контейнеры Docker бок о бок, в том же сетевом пространстве имен. Этот разблокирует большое захватывающие сценарии развития и производства для Пользователи Docker в Windows.

Оригинал:

Как упоминалось в комментариях @PanagiotisKanavos, контейнеры не предназначены для виртуализации, и они используют ресурсы главной машины. В результате на данный момент контейнер windows не может работать "как есть" на машине linux.

но - вы можете сделать это с помощью VM-как это работает на windows. Вы можете установите Windows VM на хост linux,который позволит запускать контейнеры windows.

с ним, ИМХО запустить его таким образом на среде PROD не будет лучшей идеей.

и ответ предоставляет более подробную информацию.


нет, вы не можете запускать контейнеры windows непосредственно в Linux.

но Windows Server поставляется в комплекте с базовым образом ubuntu OS (после сентября 2016 бета-пакет обновления). Именно по этой причине вы можете запускать linux на windows, а не другие мудрые. Проверьте здесь. https://thenewstack.io/finally-linux-containers-really-will-run-windows-linuxkit/

вы можете изменить между контейнерами ОС Linux и windows, щелкнув правой кнопкой мыши на ДОКере в меню лотка.

enter image description here

enter image description here


вы можете использовать контейнеры Windows внутри виртуальной машины (гостевая ОС должна соответствовать требованиям - Windows 10 Pro или Windows 2016).

вы можете использовать VirtualBox, просто включите интерфейс Hyper-V внутри системы / ускорения / паравиртуализации.

после этого, если Docker не запускается из-за ошибки, используйте "переключиться на контейнеры Windows..."в настройках.

(Это может быть перемещено как комментарий к принятому ответ, но у меня недостаточно репутации, чтобы сделать это)


в отличие от виртуализации, контейнеризация использует ту же ОС. Таким образом, контейнер, построенный на linux, не может быть запущен в windows и наоборот.

в windows вы должны воспользоваться помощью виртуализации (с помощью Hyper-v), чтобы иметь ту же ОС, что и ОС ваших контейнеров, а затем вы должны иметь возможность запускать то же самое.

Docker для windows аналогичное приложение, которое построено на Hyper-v и помогает в запуске контейнера docker linux на windows. Но, насколько мне известно, ничего подобного нет. который помогает запускать контейнеры windows в linux.


вы можете запустить MSSQL и DOTNET на Linux, и, следовательно, внутри контейнеров Linux, в настоящее время.

см.:https://hub.docker.com/r/microsoft/mssql-server-linux/

также:https://hub.docker.com/r/microsoft/dotnet/


контейнеры Windows не работают в Linux, а также вы не можете запускать контейнеры Linux непосредственно в Windows.