Изменить hosts / -h Docker для Windows в daemon.json

Я пытаюсь изменить daemon.json в Docker Desktop для Windows (установлены последние обновления Windows 10 Aniversary) 1.13.0-rc5, чтобы изменить параметр "hosts": [] следующим образом:

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

Однако после изменения настроек с помощью приложения настроек я получил эту ошибку:

Ошибка демона Docker с сообщением: невозможно настроить демон Docker с помощью файла C:\ProgramData\docker\config\daemon.json: следующие директивы указаны как в виде флага, так и в файле конфигурации: hosts: (из флага: [npipe :////./pipe/docker_engine_windows], из файла: [tcp://0.0.0.0 http://0.0.0.0])

Похоже, демон уже запущен с флагом -H, и конфигурация json не объединена с ним.

Итак, как мы можем изменить эти настройки с помощью файла json или изменить параметры запуска dockerd?


person Gutemberg Ribeiro    schedule 07.01.2017    source источник


Ответы (1)


У вас есть аналогичный случай с issue 22339:

Это ожидаемо; вы не можете указать параметры как в виде флага, так и в файле конфигурации (daemon.json).
Если вы измените свой DOCKER_OPTS на DOCKER_OPTS="" и перезапустите, то он должен работать. Мы явно не «объединяем» эти конфигурации.

Или добавить в docker.conf

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

Но официальная позиция остается:

В конфигурации systemd нет ошибок, чтобы переопределить значения по умолчанию в файле модуля systemd, вы можете использовать вставной файл, как описано в "Настраиваемые параметры демона Docker".

Создание ошибки, если указаны и флаг, и опция в daemon.json, было конструктивным решением при реализации этого (в общем, флаги всегда должны иметь приоритет над файлами конфигурации); автоматическое слияние опций не было вариантом, так как это привело бы к неожиданным результатам (было ли намерение переопределить опцию или добавить к опции?)

PR 27473 отклонен из-за выпуск 21559.

person VonC    schedule 07.01.2017
comment
Спасибо за ответ. Я тоже видел этот пр/вопрос. Тем не менее, я на Windows. Как я могу изменить параметры dockerd по умолчанию, чтобы я мог добавить -H туда, а не в файл? - person Gutemberg Ribeiro; 07.01.2017
comment
Я также ищу это - довольно раздражает, что Docker для Windows, похоже, запускает службу с флагом -H. Похоже, вместо этого сработало бы размещение этого по умолчанию в daemon.json? - person Josh Wittner; 05.05.2017
comment
Дело не только в окнах. В системе Ubuntu 16.04, которая поставляется с systemd, демон запускается с параметрами командной строки -H fd://, что конфликтует с любой настройкой хоста в daemon.json. Если затем вы попытаетесь наивно создать файл переопределения systemd для изменения директивы ExecStart (то есть с помощью systemctl edit docker), тогда systemctl жалуется, что файл Service has more than one ExecStart setting. Тогда исправление состоит в том, чтобы, вопреки здравому смыслу, добавить пустой ExecStart=, за которым следует новая настройка ExecStart=/usr/bin/dockerd. См.: Ошибка 14491. не смешно. - person init_js; 04.12.2018