Docker for Mac 创建的dnsmasq容器连不上/不工作的问题
问题描述
在使用docker for mac构建了一个dnsmasq的Container, 但是发现53端口似乎无法连接, 使用dig各种超时
这是dockerfile
FROM centos:6.8RUN yum update -y && yum install -y dnsmasqRUN echo 'listen-address=0.0.0.0' > /etc/dnsmasq.confRUN echo 'conf-dir=/etc/dnsmasq.d' >> /etc/dnsmasq.confRUN echo 'user=root' >> /etc/dnsmasq.confRUN 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 -yRUN yum clean allEXPOSE 53EXPOSE 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/dnsmasqcontainer_name: dnsrestart: always#env_file: ./config/.env#volumes:# - /etc/hosts:/etc/hosts#dns:# - 127.0.0.1ports: - '53:53' - '53:53/udp'
各种端口映射应该是没有问题的, 宿主机上运行和访问:
容器内运行和访问:
问题解答
回答1:经过 @有明 的提点, 这个的根本问题在于dnsmasq的配置有问题而不是docker的问题, 有以下几点:
错误的把 server=/a/127.0.0.1 当成了 address=/a/127.0.0.1
dnsmasq 的 listen-address=0.0.0.0 似乎是有bug的, 必须listen到精确的网卡的IP地址或者干脆不要这行listen-address
改掉之后就可以正常工作了
相关文章:
1. angular.js - 百度爬虫如何处理“#”符号?2. nosql - mongodb 多组数据不固定字段查询问题 [百度党请绕道]3. angular.js - 调后台接口 返回数据同步到 scope 上的 service 怎么写?~4. ruby - capsitrano部署时"应用服务器,web服务器,数据库服务"分别是什么意思!区别是什么?5. 学习php基础入门教程的过程中发现Python 文件I/O缺失6. css - angular前端如何让ng-repeat的内容并排一行,跑起来呢?7. 关于Apache无法启动的程序的方式是怎么解决的8. 如何解决docker宿主机无法访问容器中的服务?9. javascript - 微信jssdk ios下自定义onMenuShareAppMessage 分享失效,Android分享成功10. 老师百度网盘分享一下WampServer的包啊,我们下载几kb要下载一天的.
