docker不能連外網解決方法:
1、如果之前一直正常使用,然後發生宿主機可存取外網,但容器不能的問題,可以嘗試重啟docker服務解決:
>>>sercice docker restart #debian/ubutun中sh为dash,centos指bash >>>docker run -it -v /yourfile:/file -p 8000:8000 /bin/bash imageid >>>
2、docker容器內提供服務並監聽8888端口,要使外部能夠訪問,需要做端口映射。
docker run -it --rm -p 8888:8888 server:v1
此時出現問題,在虛機A上部署後,在A內能夠存取8888埠服務,但是在B卻不能存取。
這應該是由於請求被攔截。
查看firewall-cmd --state
如果輸出的是「not running」則FirewallD沒有在運行,且所有的防護策略都沒有啟動,那麼可以排除防火牆阻斷連線的情況了。
如果輸出的是“running”,表示當前FirewallD正在運行,需要再輸入下面的命令查看現在開放了哪些連接埠和服務:
firewall-cmd --list-ports firewall-cmd --list-services
解決方案有兩種:
1.關閉FirewallD服務:
如果您不需要防火牆,那麼直接關掉FirewallD服務就好了
systemctl stop firewalld.service
2.新增策略對外開啟指定的連接埠:
例如我們現在要打開對外5000/tcp端口,可以使用下面的命令:
firewall-cmd --add-port=5000/tcp --permanent firewall-cmd --reload
如果只是臨時打開端口,去掉第一行命令中的“--permanent”參數,那麼當再次重啟FirewallD服務時,本策略將會失效。
ip轉送沒有開啟
sysctl net.ipv4.ip_forward
顯示net.ipv4.ip_forward=0則表示未開啟。
開啟sysctl.conf檔案
vi /etc/sysctl.conf
新增以下程式碼:
net.ipv4.ip_forward=1
更多相關教學課程,請關注PHP中文網docker教學欄位。
以上是docker不能連外網解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!