Docker: unable to configure the Docker daemon with file daemon.json
Демон читает daemon.json при запуске и отказывается стартовать при любой ошибке в нём: лишняя запятая, неизвестный ключ, неверный тип значения. Сообщение обычно называет позицию или ключ.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Синтаксическая ошибка в JSON
Лишняя запятая в конце, незакрытая скобка, одинарные кавычки вместо двойных. Файл правят вручную, и это случается регулярно.
-
Неизвестный или устаревший ключ
Ключи меняются между версиями Docker. Настройка из старого руководства может быть не принята новым демоном.
-
Неверный тип значения
Строка вместо числа, число вместо логического значения. JSON разбирается, а демон отвергает содержимое.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Разбирает файл и указывает позицию ошибки.
sudo python3 -m json.tool /etc/docker/daemon.jsonСообщение демона с именем проблемного ключа.
journalctl -u docker -n 40 --no-pagerПроверка настроек демоном без запуска (в новых версиях).
sudo dockerd --validate 2>&1 | headРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Лишняя запятая в конце, незакрытая скобка, одинарные кавычки вместо двойных. Файл правят вручную, и это случается регулярно.
- Как проверить
-
Проверьте файл разборщиком JSON.
sudo python3 -c "import json;json.load(open('/etc/docker/daemon.json'))" && echo "JSON в порядке"
- Как исправить
-
Исправьте синтаксис и перезапустите демон. Перед правкой полезно сохранить копию файла.
sudo cp /etc/docker/daemon.json{,.bak} && sudo systemctl restart docker
- Почему происходит
- Ключи меняются между версиями Docker. Настройка из старого руководства может быть не принята новым демоном.
- Как проверить
-
Посмотрите сообщение демона: оно называет ключ.
journalctl -u docker -n 30 --no-pager | grep -i -E "unknown|unable to configure"
- Как исправить
- Уберите неизвестный ключ или найдите его современный аналог в документации своей версии.
- Почему происходит
- Строка вместо числа, число вместо логического значения. JSON разбирается, а демон отвергает содержимое.
- Как проверить
-
Посмотрите файл и сообщение об ошибке рядом.
sudo cat /etc/docker/daemon.json journalctl -u docker -n 20 --no-pager
- Как исправить
- Приведите типы значений к ожидаемым: логические без кавычек, числа без кавычек, списки в квадратных скобках.
Пример вывода
Лишняя запятая в конце объекта. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× docker.service - Docker Application Container Engine
Active: failed (Result: exit-code) since Mon 2026-09-15 11:02:10 MSK; 2s ago
dockerd[4100]: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '}' looking for beginning of object key string
systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Связанные ошибки
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- Docker: unable to configure the Docker daemon — конфликт -H и hosts Адрес прослушивания задан дважды: ключом -H в unit-файле и параметром hosts в daemon.json. Демон отказывается стартовать.
- Apache: Invalid command — не включён модуль Apache не запускается: директива требует модуль, который не подключён. Как найти нужный модуль и включить.
- Docker: no space left on device при запуске контейнеров Раздел с /var/lib/docker заполнен образами и слоями. Как посчитать занятое и что можно удалить безопасно.
- Service has more than one ExecStart= setting Несколько команд запуска допустимы только при Type=oneshot. Как правильно заменить команду в переопределении.
- Unit file is bad и ошибки разбора unit-файла systemd не может разобрать unit-файл: неизвестные параметры, ошибки в секциях, недопустимые значения. Как найти проблемную строку.
- Unit is masked: служба запрещена к запуску Сообщение Unit is masked: unit заблокирован ссылкой на /dev/null. Как найти и снять маскировку.
- Unit … has no installation config: не включается автозапуск systemctl enable отказывает: в unit-файле нет секции [Install] или WantedBy. Как включить службу в автозапуск правильно.
Где встречается чаще всего
Источники
- Документация Docker: файл настроек демона
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено лишней запятой в daemon.json.