在使用docker構(gòu)建應(yīng)用時,經(jīng)常會遇到docker內(nèi)部訪問失敗的問題。這是因為docker的網(wǎng)絡(luò)默認(rèn)是隔離的,容器之間無法直接通信。所以,需要進(jìn)行網(wǎng)絡(luò)配置才能實現(xiàn)容器內(nèi)部網(wǎng)絡(luò)通信。
如果在容器內(nèi)部通過ping命令訪問其他容器節(jié)點,會出現(xiàn)如下錯誤:
ping: www.xxx.com: Name or service not known
這是因為容器內(nèi)部沒有正確的DNS解析配置。解決方法如下:
docker run -it --dns 192.168.1.1 image_name
其中,--dns指定了容器內(nèi)部DNS服務(wù)器的地址,192.168.1.1替換為自己的DNS服務(wù)器地址即可。
如果還是無法訪問其他容器節(jié)點,可能是docker的iptables規(guī)則阻止了容器之間的通信。解決方法如下:
iptables -I DOCKER-USER -i bridge -j ACCEPT iptables -I FORWARD 1 -i docker0 -o docker0 -j ACCEPT
以上命令可以將docker的iptables規(guī)則進(jìn)行修改,讓容器之間可以互通。
總之,docker內(nèi)部訪問失敗的問題,一定要首先考慮網(wǎng)絡(luò)配置是否正確。如果還是無法解決問題,可以考慮iptables規(guī)則是否有問題。