docker 容器沒法鏈接外網

Q:docker run -itd --name=NAME --net host IMAGE bash  啓動容器後,容器中沒法鏈接外網docker

A:進入容器 docker exec -ti [NAMES] /bin/bashshell

設置防火牆apache

  1. 使用命令iptables  -n -L  能夠查看當前防火牆的狀態以及規則tomcat

  2. 由上面的能夠看到防火牆都沒有配置,都是空的。若是你們要清空本身的防火牆配置能夠用命令bash

  3. 啓用防火牆配置,固然首先要容許遠程,我本地的遠程端口沒有改到,建議改的。服務器

    iptables -A INPUT -p tcp --dport 22 -j ACCEPT網絡

    iptables -A OUTPUT -p tcp --sport 22 -j ACCEPTtcp

  4. 除了遠程,咱們還有其它的端口是須要開放使用的,例如作網站服務器的,還須要開放80 端口。測試

     iptables -A INPUT -p tcp --dport 80 -j ACCEPT網站

    iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

  5. 由於服務器要使用DNS解析,因此還要容許服務器與DNS服務器之間的數據通訊,直接容許那個IP 能夠了。我使用的DNS 是  114.114.114.114

    iptables -A INPUT -s 114.114.114.114 -j ACCEPT

    iptables -A OUTPUT -d 114.114.114.114 -j ACCEPT

  6. 以上是我服務器容許開放的端口都容許經過了,最後其它的都禁止就能夠了。

    最後 保存iptables的規則,我我的的服務器裏邊不須要其它的操做,因此只是作簡單的規則就能夠了。

    service iptables save

 

ps:

或者關閉防火牆,防火牆在關閉後,須要重啓宿主機,至少重啓docker服務。

緣由:防火牆的起、停、刷新這類行爲會致使清空 Docker 設置的網絡規則,而致使容器內的網絡沒法和外部互聯。

 

若是想要測試某個容器的網絡吞吐量,能夠寫一個死循環的腳本,好比:

while(true)

do 

wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz

sleep 10

done

而後打開另外一個shell窗口,在容器外面使用命令 docker stats 能夠查看每一個運行中的容器的網絡流量.

相關文章
相關標籤/搜索