Как запустить Docker контейнеры на Windows Server 2019

by itisgood

В этом руководстве мы рассмотрим, как настроить сервер 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. Оставьте нам комментарий в случае каких-либо проблем.

You may also like

2 комментария

senglory 14.05.2021 - 22:24

Вот эта команда дает ошибку

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

Reply
Леха. 02.09.2021 - 15:51

Очевидно же WinContainerHost необходимо заменить на имя вашего сервера, на котором запускается контейнер.

Reply

Leave a Comment