Windows Server 2022 安装 Dockert

如何在 Windows Server 2022 上安装 Docker 呢?经过实测,如果直接从 Docker 官网下载 Docker Desktop 进行安装,会出现启动失败的问题。特将正确的安装步骤记录如下:

安装

  1. 用管理员身份打开 PowerShell

  2. 安装 docker 下载平台

    1
    Install-Module -Name DockerMsftProvider -Force

    会弹出确认选项,输入 y 即可

  3. 安装 docker

    1
    Install-Package -Name docker -ProviderName DockerMsftProvider

    接下来会弹出一个确认框,输入 A 即可。

  4. 如果第 3 步安装失败,需要手动下载并安装

    参考【手动安装】步骤

  5. 安装完成后判断是否需要重启电脑

    1
    (Install-WindowsFeature Containers).RestartNeeded

    如果此命令的输出为Yes ,则使用以下命令重新启动服务器:

    1
    Restart-Computer
  6. 重启后,打开 PowerShell

    1
    2
    3
    4
    5
    # 查看docker安装版本
    docker version

    # 启动容器
    net start docker
  7. 修改镜像源

    C:\ProgramData\docker\config\daemon.json 文件(如果不存在,则新建一个)中添加下列内容:

    1
    2
    3
    {
    "registry-mirrors":["https://letnjuzg.mirror.aliyuncs.com","https://registry.cn-hangzhou.aliyuncs.com","https://mirror.ccs.tencentyun.com","https://registry.docker-cn.com"]
    }
  8. 通过运行hello-world容器来测试Docker Engine-Enterprise安装

    1
    docker run -p 52780:80 hello-world

手动安装

1
2
3
4
5
6
7
8
9
10
11
cd C:\Users\Administrator\AppData\Local\Temp\2\DockerProvider

# 打开配置文件 Docker_DockerSearchIndex.json 找到 preview 版本的 docker 链接进行下载,然后将下载的压缩包放到上面的目录中

Start-BitsTransfer -Source https://dockermsft.blob.core.windows.net/dockercontainer/docker-18-09-0.zip -Destination docker-18-09-0.zip

Get-FileHash -Path docker-18-09-0.zip -Algorithm SHA256

Install-Package -Name docker -ProviderName DockerMsftProvider -Verbose

Restart-Computer -Force

下载地址可以查看 C:\2目录中的 json 文件

更新

1
Install-Package -Name docker -ProviderName DockerProvider -RequiredVersion preview -Update -Force

使用

在使用的过程中可能遇到一些问题,总结如下:

  1. In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.

    有可能是 docker 没有启动,输入 net start docker 启动 docker 就可以 了。

  2. 提示 image: operating system linux cannot be used on this platform windows

    此种情况,需要切换为 linux 容器,使用如下命令切换:

    1
    2
    [Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
    Restart-Service docker

    如何切换回windows容器呢?

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

  3. 容器进行端口映射后无法通过 127.0.0.1:port 方式访问

    未解决

致谢

本文参考以下文章,在此致以诚挚谢意!

  1. Learn Computer Technologies

  2. Run Docker Containers on Windows Server 2019

  3. 卸载docker

  4. https://www.altaro.com/msp-dojo/linux-containers-windows-server-2019/

  5. https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-Server

  6. https://github.com/MicrosoftDocs/Virtualization-Documentation/issues/919#issuecomment-444717316