在daemon.json中更改Windows的"hosts"/"-h"Docker

Gut*_*iro 8 docker docker-for-windows docker-desktop

我试图改变daemon.json码头工人Windows版桌面(安装Windows 10 Aniversary最新更新),1.13.0-rc5这样我就可以改变"hosts": []这样的设置:

{
  "hosts": [
    "tcp://0.0.0.0",
    "http://0.0.0.0"
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是,使用设置应用程序更改设置后,我收到此错误:

消息守护程序守护程序失败并显示消息:无法使用文件C:\ ProgramData\docker\config\daemon.json配置Docker守护程序:以下指令既指定为标志又指定在配置文件中:hosts :( from flag:[npipe] :////./pipe/docker_engine_windows],来自文件:[tcp://0.0.0.0 http://0.0.0.0])

看起来守护进程已经使用-Hflag 启动,并且json配置未与它合并.

那么,我们如何通过json文件或更改dockerd启动参数来更改这些设置?

Von*_*onC 2

您有一个与问题 22339类似的案例:

这是预料之中的;您不能同时将选项指定为标志和配置文件 ( daemon.json)。
如果您更改DOCKER_OPTSDOCKER_OPTS=""并重新启动,那么它应该可以工作。我们明确不会“合并”这些配置。

或者在docker.conf中添加

[Service]
ExecStart=
ExecStart=/path/to/dockerd
# or
ExecStart=/path/to/dockerd daemon
Run Code Online (Sandbox Code Playgroud)

但官方的立场依然是:

配置中没有错误systemd,要覆盖systemd单元文件中的默认值,您可以使用嵌入式文件,如“自定义 Docker 守护进程选项”中所述。

如果同时提供了标志和选项,则产生错误daemon.json是实现时的设计决策(一般来说,标志应始终优先于配置文件);自动合并选项不是一个选项,因为这会导致意外结果(意图是覆盖选项还是添加到选项?)

PR 27473被拒绝,问题为 21559