Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker container can't resolve DNS to reach another AWS Ec2 Machine

Tags:

docker

I am not able to ping another machine/host App2 by resolving the DNS from the container running on host App1. Though the /etc/resolv.conf is same as that of host. I am making use of AWS Route 53 private hosted DNS to allow intercommunication by resolving DNS and not IPs.

Some basic info for this :

ubuntu@app1:~$ docker info
Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 10
Server Version: 1.13.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 31
 Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1
runc version: 9df8b306d01f59d3a8029be411de015b7304dd8f
init version: 949e6fa
Security Options:
 apparmor
Kernel Version: 3.13.0-106-generic
Operating System: Ubuntu 14.04.5 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 7.797 GiB
Name: app1
ID: 6GYC:GI6M:JNTM:MMSL:7LRD:BEUZ:RTRD:Q4AG:NEQU:XC5C:ALOK:N3LM
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

############################################
ubuntu@app1:~$ docker version
Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 06:42:29 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 06:42:29 2017
 OS/Arch:      linux/amd64
 Experimental: false

###########################################

    ubuntu@app1:~$ docker exec -it conatiner1 sh
    /data # ping app2
    ping: bad address 'app2'
    /data # ping app2.mydomain
    PING app2.mydomain (10.xx.xx.xx): 56 data bytes
    ##############################################

         resolv.conf on conatiner 

        /data # cat /etc/resolv.conf
    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

    nameserver 10.xx.xx.xx
    search mydomain

resolv.conf on host

ubuntu@app1:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 10.XX.XX.xx [ same as  of container ]
search mydomain

From the docker host i am able to ping App2 wihtout giving full domain like app2.mydomain but same is not working from the container

like image 318
RockSolid Avatar asked Mar 09 '23 17:03

RockSolid


1 Answers

When you call docker run, please add --net=host option to use host's network stack. It will do the trick.

like image 144
Darren Ha Avatar answered Mar 22 '23 06:03

Darren Ha