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. 為什么學習PHP2. javascript - .vue頁面跳轉問題3. docker-compose 為何找不到配置文件?4. mysql - 這條sql語句為什么加上where就報錯?5. 關于python切片的問題6. 前端 - 我有一個建站程序,但是多個文件夾下的HTML模板代碼沒有進行縮進格式化,請問用什么軟件可以批量格式化一下代碼?7. 我正在使用jsp / jstl / spring動態生成css和js如何將此結果放置在頭部的鏈接標簽中不在頭部的腳本標簽中8. javascript - 在nodejs的程序里面怎么理解IO呢,如何用一段代碼來說明IO9. 使用PHP和MySQL的UNIQUE如何像京東注冊那樣保證用戶名唯一?10. github - 求助大神啊,win10 git clone error,折騰了幾天都不行,以前原本好好的,突然就這樣了

網公網安備