如何在Windows Server 2019上运行Docker容器

时间:2020-02-23 14:31:37  来源:igfitidea点击:

在本教程中,我们将研究如何配置Windows Server 2019以运行Docker容器。 Docker改变了应用程序容器化以及整个微服务设计和部署模式,改变了游戏规则。 Docker使构建,运送和运行包含应用程序及其依赖关系的镜像变得容易,并避免了使用虚拟机时常见的疯狂依赖关系问题。

Docker引擎是为Docker容器提供动力的工具。它最初是为Linux编写的,但是为了使Windows和macOS用户能够运行Docker容器,已经做了很多工作。

准备工作是Windows服务器的安装。它可以在内部运行的虚拟机,物理服务器部署或者在Azure中运行的云实例上。

如何在Windows Server 2019上运行Docker容器

在使用Windows容器运行系统中的多个独立应用程序之前,我们需要启用容器功能并在Windows Server 2019上安装Docker。

在Windows Server 2019中启用容器功能

第一步是启用Windows Server 2019容器功能。以管理员身份打开PowerShell。

运行以下命令。

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

这将从PowerShell Gallery安装Docker-Microsoft PackageManagement Provider。

示例输出如下所示:

在Windows Server 2019上安装Docker

在Windows Server 2019上启用容器功能后,通过在PowerShell会话中运行以下命令来安装最新的Docker Engine和客户端。

Install-Package -Name docker -ProviderName DockerMsftProvider

使用是或者Y或者A同意所有安装,同意安装。

安装完成后,重新启动计算机。

Restart-Computer -Force

可以使用以下方法检查已安装的Docker版本:

Administrator> Get-Package -Name Docker -ProviderName DockerMsftProvider
 Name                           Version          Source                           ProviderName
 ----                           -------          ------                           -----------
 docker                         18.09.2          DockerDefault                    DockerMsftProvider

使用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 Jan also indicate that the docker daemon is not running.

通过在PowerShell上运行以下命令,可以随时完成升级。

Install-Package -Name Docker -ProviderName DockerMsftProvider -Update -Force
Start-Service Docker

第三步:运行Docker Container

启动Docker Daemon

Start-Service Docker

启动Docker Engine服务后,从Docker Hub注册表中下载预先创建的.NET示例图像:

docker pull microsoft/dotnet-samples:dotnetapp-nanoserver-1809

然后部署一个运行.Net Hello World应用程序的简单容器。

docker run microsoft/dotnet-samples:dotnetapp-nanoserver-1809

容器将启动,打印问候世界消息,然后退出。

在Windows Server 2019上运行Linux容器

开箱即用,Windows上的Docker仅运行Windows容器。要在Windows Server上使用Linux容器,我们需要使用Docker Enterprise Edition Preview,其中包括一个用于运行Docker Linux容器的完整LinuxKit系统。

卸载当前的Docker CE。

Uninstall-Package -Name docker -ProviderName DockerMSFTProvider

如果我们使用在Hyper-V上运行的Linux虚拟机运行Docker容器,请启用嵌套虚拟化。

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服务。

Restart-Service docker

拉一个测试泊坞窗镜像。

> docker run -it --rm ubuntu /bin/bash
 theitroad@localhost:/# 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

 theitroad@localhost:/# exit
 exit

要切换回正在运行的Windows容器,请运行:

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "$null", "Machine")