Docker容器无法解析DNS以到达另一台AWS Ec2机器

问题描述:

我无法通过解析主机App1上运行的容器中的DNS来ping另一台机器/主机App2。虽然/etc/resolv.conf与主机相同。我正在使用AWS Route 53专用托管DNS来通过解析DNS而不是IP来实现互通。Docker容器无法解析DNS以到达另一台AWS Ec2机器

Some basic info for this : 

[email protected]:~$ 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 

############################################ 
[email protected]:~$ 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 

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

    [email protected]:~$ 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 

[email protected]:~$ 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 

从泊坞窗主机,我能够ping通应用2 wihtout给像app2.mydomain但相同的全域没有从容器中工作

当你调用docker run,请加--net=host选项可以使用主机的网络叠加。它会做的伎俩。