Where's docker's daemon.json? (missing)

UbuntuDockerUbuntu 14.04

Ubuntu Problem Overview


From docs:

> The default location of the configuration file on Linux is > /etc/docker/daemon.json

But I don't have it on my fresh docker installation:

# docker --version
Docker version 17.03.1-ce, build c6d412e
# ls -la /etc/docker/
total 12
drwx------  2 root root 4096 Apr 28 17:58 .
drwxr-xr-x 96 root root 4096 Apr 28 17:58 ..
-rw-------  1 root root  244 Apr 28 17:58 key.json
# lsb_release -cs
trusty

Ubuntu Solutions


Solution 1 - Ubuntu

The default config file path on Linux is /etc/docker/daemon.json like you said, but it doesn't exist by default. You can write one yourself and put additional docker daemon configuration stuff in there instead of passing in those configuration options into the command line. You don't even have to do dockerd --config-file /etc/docker/daemon.json since that's the default path, but it can be useful to make it explicit for others who are inspecting the system.

Also ensure that any configuration you set in /etc/docker/daemon.json doesn't conflict with options passed into the command line evocation of dockerd. For reference:

>The options set in the configuration file must not conflict with options set via flags. The docker daemon fails to start if an option is duplicated between the file and the flags, regardless their value.

Solution 2 - Ubuntu

If you have installed Docker as part of installation of Ubuntu, then Docker is installed as a snap.

The config can be found in /var/snap/docker/current/config/daemon.json.

Refer to https://github.com/docker-archive/docker-snap/issues/22#issuecomment-423361607

Summary:

anonymouse64 commented on 21 Sep 2018

Modifying the daemon.json file is now supported in the version of the snap
I have published in the edge channel. The daemon is now hard-coded to read
the config file for it's settings, so you can now edit the daemon.json
located in $SNAP_DATA/config/daemon.json (on Ubuntu for example $SNAP_DATA
is /var/snap/docker/current, it may be different on your distribution) and
then restart docker for the changes to take effect with:

sudo snap restart docker

You may switch the snap to the edge channel to test this by running:

sudo snap refresh docker --edge

The changes in the edge channel should show up in stable in a short while
if you don't wish to use edge.

This now seems to be present in 'stable'. I am using Ubunu 20.04 and I found daemon.json in /var/snap/docker/current/config/daemon.json.

I changed the 'log-driver' to 'local' and this was picked up by docker after restarting it:

docker info --format '{{.LoggingDriver}}'
json-file
nano /var/snap/docker/current/config/daemon.json
    # added line:  "log-driver":"local",
snap restart docker
docker info --format '{{.LoggingDriver}}'
local

Solution 3 - Ubuntu

Based on @huu answer I searched for the specific reference in the docs.

Notice the sentences in bold below.


Reference 1: From the Configure the Docker daemon section:

> There are two ways to configure the Docker daemon: > > > > - Use a JSON configuration file. This is the preferred option, since it > keeps all configurations in a single place. > > - Use flags when starting > dockerd. You can use both of these options together as long as you > don’t specify the same option both as a flag and in the JSON file. If > that happens, the Docker daemon won’t start and prints an error > message. > > To configure the Docker daemon using a JSON file, create a file at > /etc/docker/daemon.json on Linux systems, or > C:\ProgramData\docker\config\daemon.json on Windows. On MacOS go to > the whale in the taskbar > Preferences > Daemon > Advanced.


Reference 2: From the Enable debugging section

> There are two ways to enable debugging. The recommended approach is to > set the debug key to true in the daemon.json file. This method works > for every Docker platform. > > 1. Edit the daemon.json file, which is usually located in /etc/docker/. You may need to create this file, if it does not yet > exist. On macOS or Windows, do not edit the file directly. Instead, > go to Preferences / Daemon / Advanced. > > 2. ....

Solution 4 - Ubuntu

Docker 19+, Mac

Config file is now available in ~/.docker/daemon.json

Solution 5 - Ubuntu

I am on ubuntu 20.04. If it doesn't exist it can be created in the /etc/docker directory . Worked for me.

Solution 6 - Ubuntu

For me on mac it was located in /Users/your-username/.docker

Solution 7 - Ubuntu

I am now using M1 MacOS, and the installed latest Docker Desktop. For that you can find daemon.json by open "Docker Desktop" > "Preferences" > "Docker Engine" > edit the texteditor under "Configure the Docker daemon by typing a json Docker daemon configuration file" > "Apply & Restart".

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionastefView Question on Stackoverflow
Solution 1 - UbuntuhuuView Answer on Stackoverflow
Solution 2 - UbuntuNZDView Answer on Stackoverflow
Solution 3 - UbuntuRtmYView Answer on Stackoverflow
Solution 4 - UbuntuNic ScozzaroView Answer on Stackoverflow
Solution 5 - UbuntuYeabsira AshenafiView Answer on Stackoverflow
Solution 6 - UbuntuleoView Answer on Stackoverflow
Solution 7 - UbuntuSyndi ZahnView Answer on Stackoverflow