【问题标题】:Enable docker experimental features on Windows Server在 Windows Server 上启用 docker 实验功能
【发布时间】:2020-06-03 14:36:02
【问题描述】:

为了能够在 Windows 2016 主机上运行 Linux 容器,我们关注了this tutorial。我们遇到的问题是我们似乎无法启用experimental 功能。在docs 它说:

要在 Docker CLI 中启用实验性功能,请编辑 config.json 文件并将实验性设置为启用。

文件C:\ProgramData\docker\config\config.json

{
  "experimental": "enabled",
  "debug": true
}

重启 Docker 服务 (Restart-Service docker) 并运行 docker info 后,我们仍会看到标志 Experimental: false

 Operating System: Windows Server 2016 Standard Version 1607 (OS Build 14393.3686)
 OSType: windows
 Architecture: x86_64
 Docker Root Dir: C:\ProgramData\docker
 Experimental: false

如何在 Windows Server 2016 上启用 Docker 实验性功能?

即使我尝试设置 environment variable 并重新启动 powershell 和 docker 服务,它也不会在 docker info 中注册:

[Environment]::SetEnvironmentVariable("DOCKER_CLI_EXPERIMENTAL", "enabled", "Machine")

使用docker login 登录到 docker 后,文件“C:\Users\bob\.docker\config.json”。添加密钥时,服务重启后仍未注册:

{
  "auths": {
    "https://index.docker.io/v1/": {
      "auth": "xxxxx"
    }
  },
  "HttpHeaders": {
    "User-Agent": "Docker-Client/19.03.5 (windows)"
  },
  "experimental": "enabled",
  "debug": true
}

【问题讨论】:

  • 您是否尝试过将实验设置为 true 而不是启用。 Json 布尔运算符使用真假,如下面的调试键所示。
  • Ypu,试过了,没有运气。
  • 刚看到你在 Build 1607 上。不幸的是,我也和你一样被困在同一条路上:(

标签: windows docker


【解决方案1】:

您将配置放入名为 config.json 的文件中。但是根据docs,正确的文件名是daemon.json

配置文件的完整路径必须是:C:\ProgramData\docker\config\daemon.json

【讨论】:

    【解决方案2】:

    我遵循Canonical Windows 上的 linux 容器教程,但在尝试提取正确的 ubuntu(linux 不是 windows)映像时遇到了困难(然后发现了你关于设置实验性的问题)。如果您向 dockerd.exe 询问参数,它将接受 (dockerd.exe --help) 选项之一是 --experimental。

    在 dockerd 调用上设置 --experimental 对我有用。

    如果您可以使用 --experimental(而不是在配置文件中)配置守护程序的调用,这可以解决您的问题。

    【讨论】:

    • 我在 Windows 上尝试了你的建议,但没有运气&'C:\Program Files\Docker\docker.exe' --experimental。帮助中也没有开关--experimental
    • 哦,我将该参数提供给 docker 守护进程,而不是在 docker 客户端上。即 dockerd.exe 没有 docker.exe,所以你必须修改服务中的 docker daemon
    【解决方案3】:

    尝试设置环境变量:

    [Environment]::SetEnvironmentVariable("DOCKER_CLI_EXPERIMENTAL", "enabled")
    

    这适用于我的 linux 集群,其中指定用户或机器似乎会导致变量被忽略..

    【讨论】:

      【解决方案4】:

      我发现它根本无法在 Windows Server 2016 上运行,如 here 所述:

      Docker Desktop 已经改变了利用 WSL2 在 Windows 10 上运行 Linux 容器的方式。Docker EE 的计划尚不清楚,因为 Docker Inc. 已将其出售给 Mirantis。 https://github.com/docker/for-win/issues/6470#issuecomment-633883063

      因此,如果您计划在生产环境中同时运行 Linux 和 Windows 容器,您可能需要寻找其他选项,例如 Kubernetes。

      事实证明,Windows (lcow) Server 上的 Linux Containers 是 Windows Server 1709 版和 Docker EE 的预览功能。 它不适用于版本低于 1709 的 Windows Server 2016。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-14
        • 1970-01-01
        • 1970-01-01
        • 2020-05-27
        • 2021-03-31
        • 2015-11-07
        • 2017-11-04
        相关资源
        最近更新 更多