首頁 >運維 >Docker >docker不能連外網解決方法

docker不能連外網解決方法

尚
原創
2020-03-31 11:50:5010917瀏覽

docker不能連外網解決方法

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn