centos 中,啟用了 firewalld 防火牆,docker 內的容器無法訪問外網


首先記錄幾個對 linux 系統服務操作的命令(以下都是對防火牆服務進行操作):

# 啟動服務
systemctl start firewalld

# 設置服務自啟動
systemctl enable firewalld

# 取消服務自啟動
systemctl disable firewalld

# 停止服務
systemctl stop firewalld

# 查看服務狀態
systemctl status firewalld

# 重啟服務
systemctl restart firewalld

 

另外如果在防火牆上配置例外端口,可以執行下面命令:

# 添加端口例外(添加時需要開啟防火牆服務,添加后需要重啟防火牆服務以生效)
firewall-cmd --add-port=8000/tcp --permanent

# 移除端口例外

firewall-cmd --remove-port=8000/tcp –permanent

# 配置 docker 容器內允許訪問外部網絡(需重啟 firewalld、docker 以生效)
firewall-cmd --permanent --zone=trusted --change-interface=docker0

 

#檢查配置

firewall-cmd --get-zone-of-interface=docker0

firewall-cmd --get-active-zones

 

# 驗證容器內對外部的訪問(檢查 DNS 解析結果是否正常)
docker run --rm busybox nslookup baidu.com

 

下面是一些 linux 中常用的網絡命令記錄:

# 驗證網站訪問
curl http://baidu.com/

# 查看 dns
nslookup baidu.com

# 查看網絡信息
ifconfig

# 查看網卡
ip link

# 刪除網卡
ip link delete docker0

# 查看路由表
ip route

# 查看 nat 表
iptables -t nat -L -n

# 啟用 ip 轉發
sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT

 

參考:
https://www.cnblogs.com/zl1991/p/10531726.html
https://unix.stackexchange.com/questions/199966/how-to-configure-centos-7-firewalld-to-allow-docker-containers-free-access-to-th

參考:
https://docs.docker.com/network/bridge/
https://docs.docker.com/v17.09/engine/userguide/networking/default_network/custom-docker0/
https://docs.docker.com/v17.09/engine/userguide/networking/default_network/binding/

firewall-cmd --get-zone-of-interface=docker0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM