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



我正在尝试在Docker Desktop for Windows(安装了Windows 10周年纪念最新更新)1.13.0-rc5上更改daemon.json,这样我就可以像这样更改"hosts": []设置:

{
"hosts": [
"tcp://0.0.0.0",
"http://0.0.0.0"
]
}

然而,在使用设置应用程序更改设置后,我得到了这个错误:

Docker守护进程失败,返回消息:无法配置Docker具有文件C:\ProgramData\docker\config\daemon.json的守护进程:以下指令同时指定为标志和配置文件:主机:(来自标志:[npipe:////./pipe/docker_engine_windows],来自文件:[tcp://0.0.0.0http://0.0.0.0])

看起来守护进程已经用-H标志启动,并且json配置没有与其合并。

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

您也有类似的问题22339:

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

或添加到docker.conf

[Service]
ExecStart=
ExecStart=/path/to/dockerd
# or
ExecStart=/path/to/dockerd daemon

但官方立场仍然是:

systemd配置中没有错误,要覆盖systemd单元文件中的默认值,您可以使用一个插件文件,如"Custom Docker daemon options"中所述。

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

PR 27473被拒绝,发布21559。

最新更新