В этом руководстве мы рассмотрим, как настроить сервер Windows 2019 для запуска контейнеров Docker.
Docker изменил правила работы с контейнерами приложений и проектированием и развертыванием микросервисов.
Docker позволяет легко создавать, отправлять и запускать образы, содержащие приложения с их зависимостями, и избегать сумасшедших проблем с зависимостями, характерных для виртуальных машин.
Docker engine – это то, что заставляет работать контейнеры.
Первоначально он был написан для Linux, но была проделана большая работа, чтобы позволить пользователям Windows и macOS запускать контейнеры Docker.
Как запустить Docker контейнеры на Windows Server 2019
Прежде чем вы сможете использовать контейнеры Windows для запуска нескольких изолированных приложений вашей системы, вам нужно включить функцию контейнеров и установить Docker на Windows Server 2019.
Шаг 1. Включите функцию контейнеров в Windows Server 2019
Первый шаг – включить функцию контейнеров Windows Server 2019. Откройте PowerShell от имени администратора.
Запустите следующие команды.
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Это установит Docker-Microsoft PackageManagement Provider из галереи PowerShell.
Пример вывода, как показано ниже:
Шаг 2. Установите Docker на Windows Server 2019
как только функция «Контейнеры» будет включена в Windows Server 2019, установите последнюю версию Docker Engine и Client, выполнив следующую команду в сеансе PowerShell.
Install-Package -Name docker -ProviderName DockerMsftProvider
Согласитесь на установку, используя «yes», «Y» или «А», чтобы согласиться со всеми.
После завершения установки перезагрузите компьютер.
Restart-Computer -Force
Установленную версию Docker можно проверить с помощью:
Administrator> Get-Package -Name Docker -ProviderName DockerMsftProvider Name Version Source ProviderName ---- ------- ------ ------------ docker 18.09.2 DockerDefault
Тожe самое можно выполнить командой docker --version
PS C:\Users\Administrator> docker version Client: Version: 18.09.2 API version: 1.39 Go version: go1.10.6 Git commit: 1ac774dfdd Built: unknown-buildtime OS/Arch: windows/amd64 Experimental: false error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/version: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
Обновление можно выполнить в любое время, выполнив следующие команды в PowerShell.
Install-Package -Name Docker -ProviderName DockerMsftProvider -Update -Force Start-Service Docker
Шаг 3: Запустите Docker контейнер
Запустить Docker Daemon
Start-Service Docker
После запуска службы Docker Engine загрузите предварительно созданный образец образа .NET из реестра Docker Hub:
docker pull microsoft/dotnet-samples:dotnetapp-nanoserver-1809
Затем разверните простой контейнер с приложением .Net Hello World.
docker run microsoft/dotnet-samples:dotnetapp-nanoserver-1809
Контейнер запустится, напечатает сообщение hello world и завершится.
Запуск контейнеров Linux на Windows Server 2019
Из коробки Docker в Windows запускает только контейнер Windows.
Чтобы использовать контейнеры Linux на Windows Server, вам нужно использовать Docker Enterprise Edition Preview, который включает в себя полную систему LinuxKit для запуска контейнеров Docker Linux.
Удалите ваш текущий Docker CE.
Uninstall-Package -Name docker -ProviderName DockerMSFTProvider
Включите вложенную виртуализацию, если вы используете Docker Containers с использованием виртуальной машины Linux, работающей в Hyper-V.
Get-VM WinContainerHost | Set-VMProcessor -ExposeVirtualizationExtensions $true
Затем установите текущую предварительную сборку Docker EE.
Install-Module DockerProvider Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview
Включить систему LinuxKit для запуска контейнеров Linux
[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
Перезапустите Docker Service после изменения.
Restart-Service docker
Вытащите образ тестового докера.
> docker run -it --rm ubuntu /bin/bash root@1440a7fef7e0:/# cat /etc/os-release NAME="Ubuntu" VERSION="18.04.1 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.1 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic root@1440a7fef7e0:/# exit exit
Чтобы вернуться к работе с контейнерами Windows, выполните:
[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "$null", "Machine")
Наслаждайтесь работой контейнеров Linux и Windows на Windows Server 2019. Оставьте нам комментарий в случае каких-либо проблем.
2 комментария
Вот эта команда дает ошибку
PS C:\prj\> Get-VM WinContainerHost | Set-VMProcessor -ExposeVirtualizationExtensions $true
Get-VM : Hyper-V was unable to find a virtual machine with name “WinContainerHost”.
At line:1 char:1
+ Get-VM WinContainerHost | Set-VMProcessor -ExposeVirtualizationExtens …
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (WinContainerHost:String) [Get-VM], VirtualizationException
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.GetVM
Очевидно же WinContainerHost необходимо заменить на имя вашего сервера, на котором запускается контейнер.