解決方法:1、用“cat /proc/sys/net/ipv4/ip_forward”查看“/proc”文件系統(tǒng),確認系統(tǒng)是否打開ip轉(zhuǎn)發(fā)功能;2、用“echo 1 > /proc/sys/net/ipv4/ip_forward”將文件內(nèi)的內(nèi)容由0修改為1即可打開ip轉(zhuǎn)發(fā)功能;3、修改“/etc/sysctl.conf”文件內(nèi)“ip_forward”的值可以永久修改ip轉(zhuǎn)發(fā)。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker19.03版、Dell G3電腦。
docker無法解析域名怎么辦
一直報unknown host,無法解析域名,來一起看看詳細的解決方法:
解決方法
1、Linux系統(tǒng)默認沒有打開IP轉(zhuǎn)發(fā)功能,要確認IP轉(zhuǎn)發(fā)功能的狀態(tài),
可以查看/proc文件系統(tǒng),使用下面命令:
出于安全考慮,Linux系統(tǒng)默認是禁止數(shù)據(jù)包轉(zhuǎn)發(fā)的。
所謂轉(zhuǎn)發(fā)即當主機擁有多于一塊的網(wǎng)卡時,其中一塊收到數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的目的ip地址將包發(fā)往本機另一網(wǎng)卡,該網(wǎng)卡根據(jù)路由表繼續(xù)發(fā)送數(shù)據(jù)包。配置Linux系統(tǒng)的ip轉(zhuǎn)發(fā)功能,首先保證硬件連通,然后打開系統(tǒng)的轉(zhuǎn)發(fā)功能
cat /proc/sys/net/ipv4/ip_forward,該文件內(nèi)容為0,表示禁止數(shù)據(jù)包轉(zhuǎn)發(fā),1表示允許。
2、如果上述文件中的值為0,說明禁止進行IP轉(zhuǎn)發(fā);
如果是1,則說明IP轉(zhuǎn)發(fā)功能已經(jīng)打開,要想打開IP轉(zhuǎn)發(fā)功能,可以直接修改上述文件:
echo?1?>?/proc/sys/net/ipv4/ip_forward
把文件的內(nèi)容由0修改為1。禁用IP轉(zhuǎn)發(fā)則把1改為0。
3、上面的命令并沒有保存對IP轉(zhuǎn)發(fā)配置的更改,下次系統(tǒng)啟動時仍會使用原來的值
要想永久修改IP轉(zhuǎn)發(fā),需要修改/etc/sysctl.conf文件,修改下面一行的值:
net.ipv4.ip_forward?=?1
修改后可以重啟系統(tǒng)來使修改生效,也可以執(zhí)行下面的命令來使修改生效:
sysctl?-p?/etc/sysctl.conf
進行了上面的配置后,IP轉(zhuǎn)發(fā)功能就永久開啟了
擴展知識:
進入 Docker 容器后,在 hosts 文件中,配置域名解析。
#?進入?docker?容器 docker?exec?-it??my_web?/bin/bash #?修改?hosts?文件 vi?/etc/hosts #?添加域名解析規(guī)則 192.168.99.100??example.test #?利用?ping?命令驗證一下,是否可以?ping?通 ping?example.test
如果你的 Docker 宿主主機沒有 ping 命令,你可以安裝一下;當然,如果你不想安裝的話也無所謂,你可以通過其他的方式來驗證域名解析是否已經(jīng)得到解決。
需要注意的是:每次重啟容器(服務)后,容器中的 /etc/hosts 文件新增的配置就會失效,故需要重新配置一下。
推薦學習:《docker視頻教程》