在使用docker for mac构建了一个dnsmasq的Container, 但是发现53端口似乎无法连接, 使用dig各种超时
这是dockerfile
FROM centos:6.8
RUN yum update -y && yum install -y dnsmasq
RUN echo "listen-address=0.0.0.0" > /etc/dnsmasq.conf
RUN echo "conf-dir=/etc/dnsmasq.d" >> /etc/dnsmasq.conf
RUN echo "user=root" >> /etc/dnsmasq.conf
RUN echo "server=/a/127.0.0.1" >> /etc/dnsmasq.conf
#a供测试用
#RUN echo 'resolv-file=/etc/resolv.dnsmasq.conf' >> /etc/dnsmasq.conf
#RUN echo "nameserver 127.0.0.11" > /etc/resolv.dnsmasq.conf
#上一行出现了127.0.0.11并不是写错, 而是发现docker for mac的container的/etc/resolv.conf里面确实出现了127.0.0.11, 并且这个上面是可以解析域名的, 所以才试图这么尝试过这个配置
RUN yum install nc -y
RUN yum clean all
EXPOSE 53
EXPOSE 53/udp
#CMD ["nc", "-l", "53"] #tcp调试
#CMD ["nc", "-l", "-u", "53"] #udp调试
CMD ["/usr/sbin/dnsmasq", "-d"]
这是docker-compose
version: '2'
services:
dns:
build: ../../images/dnsmasq
container_name: dns
restart: always
#env_file: ./config/.env
# volumes:
# - /etc/hosts:/etc/hosts
# dns:
# - 127.0.0.1
ports:
- "53:53"
- "53:53/udp"
各种端口映射应该是没有问题的, 宿主机上运行和访问:
容器内运行和访问:
仅有的幸福2017-04-24 16:01:22
@Youming 님의 제안 이후 근본적인 문제는 docker의 문제가 아닌 dnsmasq의 구성에 문제가 있다는 점입니다.
server=/a/127.0.0.1
을 address=/a/127.0.0.1
dnsmasq의 listen-address=0.0.0.0
에 버그가 있는 것 같습니다. 네트워크 카드의 정확한 IP 주소를 들어야 합니다. 아니면 이 줄이 필요하지 않습니다. listen-address
변경 후에는 정상적으로 작동됩니다