Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題
問題描述
在使用docker for mac構(gòu)建了一個(gè)dnsmasq的Container, 但是發(fā)現(xiàn)53端口似乎無法連接, 使用dig各種超時(shí)
這是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#上一行出現(xiàn)了127.0.0.11并不是寫錯(cuò), 而是發(fā)現(xiàn)docker for mac的container的/etc/resolv.conf里面確實(shí)出現(xiàn)了127.0.0.11, 并且這個(gè)上面是可以解析域名的, 所以才試圖這么嘗試過這個(gè)配置RUN yum install nc -yRUN yum clean allEXPOSE 53EXPOSE 53/udp#CMD ['nc', '-l', '53'] #tcp調(diào)試#CMD ['nc', '-l', '-u', '53'] #udp調(diào)試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'
各種端口映射應(yīng)該是沒有問題的, 宿主機(jī)上運(yùn)行和訪問:
容器內(nèi)運(yùn)行和訪問:
問題解答
回答1:經(jīng)過 @有明 的提點(diǎn), 這個(gè)的根本問題在于dnsmasq的配置有問題而不是docker的問題, 有以下幾點(diǎn):
錯(cuò)誤的把 server=/a/127.0.0.1 當(dāng)成了 address=/a/127.0.0.1
dnsmasq 的 listen-address=0.0.0.0 似乎是有bug的, 必須listen到精確的網(wǎng)卡的IP地址或者干脆不要這行l(wèi)isten-address
改掉之后就可以正常工作了
相關(guān)文章:
1. javascript - 移動(dòng)端padding問題2. javascript - ios上fixed定位問題,定位在底部的按鈕不顯示了,但是又可以點(diǎn)擊到,換了一個(gè)類名就可以顯示了,但是設(shè)置的字體大小卻失效了3. javascript - js正則替換日期格式問題4. javascript - 關(guān)于微信掃一掃的技術(shù)問題5. javascript - Vue.js的ElementUI庫中,如何主動(dòng)觸發(fā)checkbox組件的change事件?6. javascript - webpack 打包 reactjs項(xiàng)目 css 分離7. javascript - vuex中子組件無法調(diào)用公共狀態(tài)8. javascript - 請教移動(dòng)端從詳情頁返回到列表頁原來位置的問題?9. javascript - (_a = [""], _a.raw = [""],....); js一個(gè)小括號的是什么意思?10. javascript - 怎樣定位一個(gè)動(dòng)作調(diào)用了哪個(gè)js,不打斷點(diǎn)調(diào)試?
