Centos8安裝Docker容器內無法訪問網絡

Centos8安裝Docker容器內無法訪問網絡 

     在Centos8中,默認安裝的的容器管理工具是使用了Podman,Podman的設計理念非常好,整合了pod思想,用戶可以直接啓動容器而不是像Docker那樣通過守護進程啓動,這樣也會提高安全性。但是現在Podman國內使用的人數並不是很多,還會有一些問題出現。所以在Centos8上先將Podman替換爲Docker。

在安裝好Docker後,結果沒有網絡,經過排查發現是沒有開啓ip轉發。正常情況下,Docker會自動開啓地址轉發。但是,不知道爲什麼Docker在Centos8中沒有開啓iptables的地址轉發,需要我們使用firewalld防火牆管理工具來手動開啓IP地址轉發功能。

檢查iptables

接下來會清除iptables現有規則,如果你一直使用的是firewalld來管理你的防火牆,就沒必要查看現有的iptbales規則了

iptabels -L

臨時關閉firewallddocker服務

systemctl stop firewalld docker

清除現有防火牆規則

由於docker啓動容器時會在iptables中添加規則,我們先把原來先放行規則,非常重要!

iptables -P INPUT ACCEPT

否則22端口也就是你的SSH服務可能再也連不上了。

iptables -F   ##清除所有規則

開啓端口轉發

1、開啓內核IP地址轉發功能

首先查看內核是否開啓IP地址轉發功能

cat /proc/sys/net/ipv4/ip_forward

返回爲1已開啓,返回0則需要手動開一下。

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf    ###複製到終端上!以root用戶身份執行。
sysctl -p   ###使更改立即生效

2、防火牆放行IP地址轉發

現在將firewalld服務啓動

systemctl start firewalld

默認情況下firewalld會禁止轉發流量,可以執行firewall-cmd --query-masquerade查看狀態,應該是no,請執行下面的命令開啓轉發。

firewall-cmd --add-masquerade --permanent     ##永久開啓IP地址轉發

firewall-cmd --reload         ##重載防火牆規則,使之生效

3、啓動Docker服務

現在可以啓動docker服務

systemctl start docker

docker run -it --rm centos:latest 

ping baidu.com

檢查容器網絡是否正常

額外要注意的一點是,如果你防火牆屏蔽了icmpecho-request請求,也就是我們說的禁止Ping。那麼在容器中Ping別人及其的時候也會被主機防火牆攔截下來,Ping不通的哦。如果Ping不通可以使用curl www.baidu.com看看能不能訪問得到百度頁面,這樣檢測。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章