Docker Community Forums

Share and learn in the Docker community.

Unable to specify DNS nameservers on Docker for Mac

Like the title says, I’ve been trying to get the DNS working in my Docker container, and I’m starting to think that I’m taking crazy pills. I’m aware that there’s a related open issue, but I’ve seen similar issues pop up all over the place and everyone seems to find a workaround, none of which have been working for me.

Apologies for the lack of links to my sources, as a new user I’m limited to 2 links in a post.

Diagnosis:

Whenever I try and run my Dockerized Rails app locally, it takes 10+ seconds to load any page, which makes local development challenging. Running docker run busybox ping -c 1 172.217.1.36 runs perfectly:

--- 172.217.1.36 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 14.611/14.611/14.611 ms

But docker run busybox nslookup google.com fails:

;; connection timed out; no servers could be reached

The contents of resolv.conf in my container are:

search my.example.com
nameserver 127.0.0.11
options ndots:0

I’d like to change the nameserver from 127.0.0.11 to 1.1.1.1 and an internal company nameserver, but every attempt I’ve made to do so has failed.

My config

I’m running Docker version 19.03.2, build 6a30dfc.

The results of scutil --dns (company info removed):

DNS configuration

resolver #1
  search domain[0] : company.eng
  nameserver[0] : 10.63.7.20
  nameserver[1] : 10.32.112.53
  flags    : Request A records
  reach    : 0x00000002 (Reachable)

resolver #2
  domain   : local
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300000

resolver #3
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300200

resolver #4
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300400

resolver #5
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300600

resolver #6
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300800

resolver #7
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.1.1
  if_index : 11 (en0)
  flags    : Scoped, Request A records
  reach    : 0x00020002 (Reachable,Directly Reachable Address)

A few things I’ve tried:

Per Docker’s getting started documentation, I’ve tried editing my daemon.json in ~/.docker:

{
  "dns" : ["172.17.49.33", "1.1.1.1"]
}

No luck.

I’ve tried editing my docker-compose.yml per the compose file documentation:

version: '3'
services:
  my-app:
    image: my-app
    dns:
      - 172.17.49.33
      - 1.1.1.1

[the rest of the file omitted...]

Still no luck. These seem like the proper way to specify a dns address for my container, but I’ve tried these and a bunch of other longs shots from related forum posts, and I’m coming up blank.

Does anyone have any ideas for how to fix this? Open to trying just about anything at this point.