Контейнер Linux Docker на Windows Server 2016

Как запустить контейнер докеров Linux на Windows Server 2016? С Docker для Windows это легко сделать в Windows 10. Это единственный способ установить Docker Toolbox и полностью игнорировать встроенные контейнеры?


person Natalia    schedule 06.12.2016    source источник
comment
Вам удалось решить эту проблему?   -  person David Pilkington    schedule 03.05.2017


Ответы (5)


На W2016 можно использовать контейнеры Linux. Хотя это немного взломано. Пользователь "Algore" описал это здесь, но я, конечно, скопировал его в этот ответ.

  • Загрузите «Docker для Windows»: https://docs.docker.com/docker-for-windows/

  • Установите «Докер для Windows» в Windows 10 Pro.

  • Скопируйте C:\Program Files\Docker с компьютера с Windows 10 в C:\Program Files на своем сервере 2016.

  • На коробке W2016 запустить install-windowsfeature hyper-v,containers

  • Скопируйте эти записи реестра в файл и импортируйте их в свой сервер Server 2016 (импорт reg):

--- НАЧАЛО ---
Редактор реестра Windows версии 5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Docker Inc.]

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Docker Inc. \ Docker]

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Docker Inc. \ Docker \ 1.0]
"AppPath" = "\" C: \ Program Files \ Docker \ Docker \ Docker для Windows.exe \ ""
"BinPath" = "\ "C: \ Program Files \ Docker \ Docker \ resources \ bin \" "

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ Application \ DockerService]
«EventMessageFile» = шестнадцатеричный (2): 43,00,3a, 00,5c, 00,57,00,69,00,6e, 00 , 64,00,6f, 00,77, \ 00,73,00,5c, 00,4d, 00,69,00,63,00,72,00,6f, 00,73,00,6f, 00, 66,00,74,00,2e, 00, \ 4e, 00,45,00,54,00,5c, 00,46,00,72,00,61,00,6d, 00,65,00,77 , 00,6f, 00,72,00,6b, \ 00,36,00,34,00,5c, 00,76,00,34,00,2e, 00,30,00,2e, 00,33, 00,30,00,33,00,31,00, \ 39,00,5c, 00,45,00,76,00,65,00,6e, 00,74,00,4c, 00,6f, 00 , 67,00,4d, 00,65,00,73, \ 00,73,00,61,00,67,00,65,00,73,00,2e, 00,64,00,6c, 00, 6c, 00,00,00

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ com.docker.service] «Тип» = двойное слово: 00000010 «Пуск» = двойное слово: 00000002 «ErrorControl» = двойное слово: 00000000 «ImagePath» = шестнадцатеричное (2): 22,00,43 , 00,3a, 00,5c, 00,50,00,72,00,6f, 00,67,00,72,00,61,00, \ 6d, 00,20,00,46,00,69, 00,6c, 00,65,00,73,00,5c, 00,44,00,6f, 00,63,00,6b, 00,65, \ 00,72,00,5c, 00,44,00 , 6f, 00,63,00,6b, 00,65,00,72,00,5c, 00,63,00,6f, 00,6d, 00, \ 2e, 00,64,00,6f, 00, 63,00,6b, 00,65,00,72,00,2e, 00,73,00,65,00,72,00,76,00,69, \ 00,63,00,65,00,22 , 00,00,00
"DisplayName" = "Docker для службы Windows"
"ObjectName" = "LocalSystem"
"Description" = "Запустить внутреннюю службу Docker для Windows"
--- КОНЕЦ---

Вы можете добавить запись в currentversion \ run или в запланированное задание, если хотите, чтобы docker для windows.exe запускался автоматически.

  • Перезагрузите компьютер и запустите сценарий PowerShell C:\Program Files\Docker\Docker\Resources\mobylinuxvm.ps1 -Create

Загляните в этот файл ps1 и обратите внимание, что вы можете установить различные параметры. Посетите эти веб-сайты:

https://docker-saigon.github.io/post/Docker-Beta/
https://jpetazzo.github.io/2013/10/16/configure-docker-bridge-network/

  • Перед запуском C:\Program Files\Docker\Docker for Windows.exe убедитесь, что служба docker com.docker.service (start-service com.docker.service) запущена.

Если вы работаете в ядре сервера и у вас нет значка в трее, нажмите «изменить настройки конфиденциальности», когда появится уведомление после того, как оно начнет переходить к настройкам (или измените json в программных данных)

Если вы столкнетесь с проблемами при попытках и восстановлении, проверьте файл C:\Program Files\Docker\Docker\Resources\forceremovedocker.ps1, чтобы найти места для удаления настроек, например, в C:\programdata. Я бы посоветовал не запускать скрипт, так как он удаляет все, что связано с докерами. Просто используйте его кусочки.

person Boggin    schedule 23.03.2017
comment
Я выполнил эти шаги и могу запустить docker для Windows, однако по какой-то причине путь bin не выбирается, и я не могу запустить docker или docker-compose в cmd. Команды не распознаются, если я явно не перейду в папку. Любые идеи? - person chvndb; 13.04.2017
comment
Инструменты CLI устанавливаются отдельно. релизы Docker Engine и Docker Compose релизы доступны на GitHub. - person Boggin; 14.04.2017
comment
Что значит отдельная установка? Инструменты интерфейса командной строки находятся прямо здесь, как часть установки Docker для Windons, в папке C: \ Program Files \ Docker \ Docker \ resources \ bin \. В конце концов, я просто добавил папку bin в свою переменную окружения $ PATH. Теперь работает нормально. - person chvndb; 27.04.2017
comment
Теперь Docker Desktop использует WSL и не работает на Windows Server 2016 (нет файла mobylinuxvm.ps1, нет iso-файла) - person rominokun; 22.10.2020

Согласно это от Стефана Шерера, можно запустить Контейнеры Linux на сервере 2016. Инструкции следующие:

Создайте машину Linux Docker в Hyper-V

Если вы хотите опробовать мультиархитектуру, вы также можете использовать docker-machine для создания Linux Docker Engine, работающего в Hyper-V. Я подготовил сценарий, который все настроит, так как есть некоторые известные проблемы.

C:\vagrant\scripts\create-hyperv-linux-docker-machine.ps1

Этот сценарий PowerShell создает машину Docker и обновляет Docker Engine до последней версии, чтобы клиент Windows Docker мог взаимодействовать с Linux Docker Engine.

Используйте машину Linux Docker

Откройте терминал PowerShell от имени администратора и выберите машину Linux Docker с

docker-machine env --shell powershell | iex

Теперь запустите свой первый контейнер busybox с

docker run -it busybox uname -a
person Dave    schedule 12.04.2017
comment
Какая версия Windows Server 2016, надеюсь, вы имеете в виду 1609. - person basickarl; 03.07.2019
comment
Также этот сценарий выдает ошибку в PowerShell: grep: термин 'grep' не распознается как имя командлета - person basickarl; 03.07.2019

К сожалению, прямо сейчас невозможно легко установить инструмент «Докер для Windows». Этот установщик предоставляет тонкую виртуальную машину под названием MobyLinux, которая позволяет запускать контейнеры Linux на Windows Server 2016. Вы можете найти попытка взломанной установки (которую я не пробовал) на форумах Docker.

Для справки существует хорошее обсуждение того, что происходит за кулисами с "Docker для Windows ».

person William Denman    schedule 30.12.2016
comment
Теперь это возможно, хотя и не простая установка. См. Следующий ответ. - person Boggin; 24.03.2017
comment
@Boggin Это попытка взлома, о которой я упоминал в своем ответе. - person William Denman; 26.03.2017

Просто загрузите и установите Docker на Windows Server 2016 https://www.docker.com/docker-windows
Если вы запускаете Windows Server 2016 в качестве виртуальной машины с использованием Hyper-V, обязательно проверьте этот документ MS https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/руководствопользователя/вложеннаявиртуализация

person Serge Voloshenko    schedule 14.02.2018

Приведенное ниже работало на Windows Server 2016, сборка 14393.693 (январь 2017 г.), без хитрых обходных путей.

Это может работать на более высоких / более низких сборках, но я попытался реплицировать на недавно обновленной версии Windows Server 2016, и это впечатляюще провалилось! Такое ощущение, что эту дыру нужно залатать!

Скачать Docker Community Edition 2.0.0.3 15.02.2019

Ссылка: https://download.docker.com/win/stable/31259/Docker%20for%20Windows%20Installer.exe

Страница со всеми версиями: https://docs.docker.com/docker-for-windows/release-notes/

Просто скачайте / скопируйте файл на машину с Windows Server 2016 и запустите.

Он также может работать в автономном режиме для систем с воздушными зазорами.

Снимите флажок Использовать контейнеры Windows во время установки. По умолчанию флажок не установлен.

После установки вы получите сообщение о том, что windows so и so устарела. Щелкните ОК. введите здесь описание изображения  введите описание изображения здесь Выйдите и войдите снова.

Если вы не установили Hyper-V, вам будет предложено сделать это автоматически. Разрешите, дайте ему закончить и перезапустите. Теперь тебе хорошо идти. Возможно, вам придется перезагрузить компьютер снова, если не удается переключиться на Linux.

Я тестировал это, запустив несколько контейнеров Linux, все работает нормально. Если я чего-то упускаю, поделитесь этим на благо других. Обратной стороной является то, что вы не можете обновиться до более поздней версии Docker.

person Waleed Al Harthi    schedule 09.03.2021