dockerdns

Configuring options for docker run


Due to local network configuration I have to add --dns and --dns-search options to my docker run commands like so:

docker run --dns XX.XX.1.1 --dns-search companydomain -t mycontainer

Is there an environment variable or config file where I can add the DNS options so that I don't have to type them each time I want to run a container?

I'm using docker on Ubuntu 16.04 running on VMware VM hosted on a Windows machine.

Thank you.


Solution

  • You can add these options to the docker daemon as the default for all the containers it runs. On the dockerd command line, the options are the same, --dns XX.XX.1.1 --dns-search companydomain. To avoid changing the startup scripts to add that option, it's easier to set up an /etc/docker/daemon.json file with the following:

    {
      "dns": ["XX.XX.1.1"],
      "dns-search": ["companydomain"]
    }
    

    Restart the docker daemon with systemctl restart docker to apply the change.

    You may find it better to update /etc/resolv.conf in your VM to apply this change not on the docker containers but the VM itself. That would look like:

    nameserver XX.XX.1.1
    search companydomain
    

    When updating the /etc/resolv.conf, make sure it's not managed by another tool, e.g. if you are getting dhcp addresses for your VM this would be overwritten by the dhcp client daemon.