• 在 Windows Server 2019 上运行 dapr 遇到的 docker 问题


    在 Windows Server 2019 上安装 dapr ,安装成功后有一段提示文字

    Ensure that Docker Desktop is set to Linux containers mode when you run Dapr in self hosted mode.

    开始时没注意到这个提示,然后安装 docker engine

    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
    Install-Package -Name docker -ProviderName DockerMsftProvider
    

    接着运行 dapr init ,报下面的错误

    docker: no matching manifest for windows/amd64 10.0.17763 in the manifest list entries.

    查找资料后得知 docker engine 默认是 Windows container 模式,解决上面的错误需要切换到 Linux container 模式,这时才注意到安装 dapr 时的提示。

    通过 docker desktop 切换到 Linux container 模式,但 docker engine 总是启动失败,报错如下:

    The Virtual Machine Management Service failed to start the virtual machine 'DockerDesktopVM' because one of the Hyper-V components is not running

    折腾一阵,没有解决,后来通过 Run Docker Containers on Windows Server 2019 知道原来需要安装 preview 版 Docker EE。

    通过下面的一系列 powershell 命令安装 preview 版 Docker EE 之后,支持 Linux container 模式终于成功启动。

    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
    
    Uninstall-Package -Name docker -ProviderName DockerMSFTProvider
    Install-Module DockerProvider
    Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview
    Restart-Computer -Force
    [Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
    Restart-Service docker
    

    但是运行 dapr init 出现新的错误

    docker: failed to register layer: failed to start service utility VM (applydiff 88e57cc977280a42ef93829fad29a6ffbe1be1320278764f77575546056c1800): container 88e57cc977280a42ef93829fad29a6ffbe1be1320278764f77575546056c1800_svm encountered an error during CreateContainer: failure in a Windows system call: The virtual machine could not be started because a required feature is not installed. (0xc0370102) extra info: {"SystemType":"container","Name":"88e57cc977280a42ef93829fad29a6ffbe1be1320278764f77575546056c1800_svm","Layers":null,"HvPartition":true,"HvRuntime":{"ImagePath":"C:\Program Files\Linux Containers","LinuxInitrdFile":"initrd.img","LinuxKernelFile":"bootx64.efi"},"ContainerType":"linux","TerminateOnLastHandleClosed":true}.

    运行 ubuntu 容器也是同样的错误

    docker run -it --rm ubuntu /bin/bash
    

    又折腾一阵,通过 Azure VM Docker CreateContainer Error (0xc0370102) 知道原来需要云服务器支持 Nested Virtualization,看来当前使用的百度云服务器不支持。

    换到阿里云试试,阿里云提供了专门的“Windows Server 2019 with Container 数据中心版”镜像,用这个镜像也未能成功运行 Linux container。

    网上查了一下,目前好像只有微软的 azure 与 google 的 gcd 支持 Nested Virtualization。

  • 相关阅读:
    你为什么老是找不到满意的工作? 多思考自己的原因 !
    微信企业号开发之-如何获取secret 序列号
    可以免费自学编程的12个网站
    软件职业:聊聊学习这件事!
    致行业初学者:关于某些培训机构,老徐聊几句,也许对你们有用
    查看centos版本号
    配置mysql远程访问权限,大家可能掉过的那些坑~
    测试必备技能系列6:软件安装部署是最基本的能力!
    一个测试老鸟对职业技术交流群的几点看法
    为什么你一直找不到工作:因为你什么都想学,什么都不会!
  • 原文地址:https://www.cnblogs.com/dudu/p/15573090.html
Copyright © 2020-2023  润新知