婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Docker容器端口映射后突然無法連接的排查過程

Docker容器端口映射后突然無法連接的排查過程

熱門標簽:coreldraw地圖標注 信陽銷售外呼系統招商 百應電銷機器人靠譜嗎 菏澤crm外呼系統價格 申請400電話號碼多少錢 營銷電銷機器人招商 遼寧電銷平臺外呼系統軟件 物超所值的400電話申請 如何在各種地圖標注自己的地址

一、背景

一般需要對外提供服務的Docker容器,我們在啟動時后使用-p命令將對外訪問端口暴露給外部,例如啟動Docker Registry,我們將5000端口映射出來供外部訪問:

docker run -d -p 5000:5000 registry

但最近碰到一個非常奇怪的情況:研發組里一個CentOS 7測試環境里部署有Docker Registry,并對外暴露了端口。啟動容器后一段時間內都是可以正常工作的,但在不定時間間隔后,外部主機就會出現無法從倉庫中拉取鏡像的情況,提示TimeOut:

然而在Docker宿主機上訪問倉庫則可以正常訪問:

至于這個問題,只有手動重啟出問題的Docker daemon服務后,外部才可以重新訪問,但只要再過一段時間又會出現這樣的問題。

二、問題排查

碰到這個問題我第一反應就是問組里的人,是不是有人重啟過CentOS 7 自己的firewallD了。

因為這臺服務器是我配置的,防火墻雖然開著但我已經開啟端口訪問了,所以肯定不是因為防火墻阻斷連接的緣故。但由于這篇文章是篇踩坑排查文檔,所以還是把這種情況寫出來了

情況一:開著防火墻但沒有開放端口

CentOS 7自帶并啟用了防火墻FirewallD,我們可以通過下面的命令檢查FirewallD的狀態:

firewall-cmd --state

如果輸出的是“not running”則FirewallD沒有在運行,且所有的防護策略都沒有啟動,那么可以排除防火墻阻斷連接的情況了。

如果輸出的是“running”,表示當前FirewallD正在運行,需要再輸入下面的命令查看現在開放了哪些端口和服務:

firewall-cmd --list-ports
firewall-cmd --list-services

 

可以看到當前防火墻只開放了80/tcp端口、ssh服務(22/tcp)和dhcpv6-client服務,并沒有打開Docker容器映射的5000/tcp端口。

解決方案有兩種:

1.關閉FirewallD服務:

如果您不需要防火墻,那直接關掉FirewallD服務就好了

systemctl stop firewalld.service

2.添加策略對外打開指定的端口:

比如我們現在要打開對外5000/tcp端口,可以使用下面的命令:

firewall-cmd --add-port=5000/tcp --permanent
firewall-cmd --reload

如果只是臨時打開端口,去掉第一行命令中的“--permanent”參數,那么當再次重啟FirewallD服務時,本策略將失效。 

情況二:人為重啟CentOS 7的FirewallD服務

FirewallD是CentOS系統在7版本引入的新組件,簡單的說就是iptables的包裝,用于簡化防火墻相關的設置。

然而FirewallD和Docker相處的并不是特別好,當FirewallD啟動(或重新啟動)時,會從iptables中刪除DOCKER鏈,造成Docker不能正常工作:

FirewallD

CentOS-7 introduced firewalld, which is a wrapper around iptables and can conflict with Docker.

When firewalld is started or restarted it will remove the DOCKER chain from iptables, preventing Docker from working properly.

When using Systemd, firewalld is started before Docker, but if you start or restart firewalld after Docker, you will have to restart the Docker daemon.

 摘自Docker官方文檔《CentOS - Docker Documentation》

在CentOS 7中,如果設置使用systemd開機自啟動Docker服務是不會有問題的,因為Docker在systemd配置文件中明確注明了“After= firewalld.service”,以保證Docker daemon 在FirewallD啟動后再啟動。

(Docker:惹不起我還躲不起嗎)

但每當用戶手動重啟過FirewallD服務之后,FirewallD服務會將Docker daemon寫入iptables的DOCKER鏈刪除,所以需要手動重新啟動一次Docker daemon服務,讓Docker daemon服務重建DOCKER鏈。

 不過問了組里另外兩個研發,都說沒有動過。查看了shell的history也沒找到對應的記錄。

這就很奇怪了。不過經過一段時間的蹲點排查之后,我終于發現了一個新的原因:

情況三:沒有啟用IP_FORWARD

因為一直沒法定位出問題的所在,所以我們研發組都是發現不能正常訪問倉庫時,手動登陸宿主機重啟Docker daemon服務。

在有一次登錄到宿主服務器上準備重啟Docker daemon服務前,我突然想起之前在用Docker的時候還碰到過另一個問題:如果宿主機沒有啟用IP_FORWARD功能,那Docker容器在啟動時會輸出一條警告消息:

WARNING: IPv4 forwarding is disabled. Networking will not work.

并且將不能在啟動的容器中訪問外部網絡,容器對外暴露的端口外部也不能正常訪問:

 

會不會是因為宿主機的IP_FORWARD功能沒有啟用所以才引起的這個故障呢?

sysctl net.ipv4.ip_forward

果然,輸出表示當前系統的IP_FORWARD功能處于停用狀態!

可是問題來了,當時啟動容器的時候都是好的啊,什么都沒有輸出,怎么用著用著IP_FORWARD功能就被禁用了呢?

等等,Docker daemon服務在啟動的時候會自動設置iptables設置,難不成它還會檢查IP_FORWARD設置,并幫我臨時啟用嗎?

帶著這個假設,我手動重啟了一下Docker daemon服務:

果然,Docker daemon服務在啟動過程中會檢查系統的IP_FORWARD配置項,如果當前系統的IP_FORWARD功能處于停用狀態,會幫我們臨時啟用IP_FORWARD功能,然而臨時啟用的IP_FORWARD功能會因為其他各種各樣的原因失效…

雖然具體造成本次故障的原因現在還沒有確鑿的證據定位出,但我現在嚴重懷疑是因為重啟網絡服務造成的。因為出問題的服務器宿主機上運行著我們研發組正在開發的Web項目,其中有一個功能是修改網卡IP地址,這個功能在修改完網卡IP后,會自動調用下面的命令重啟網絡服務:

systemctl restart network.service

而重啟網絡服務正會使Docker daemon服務自動設置的臨時啟用IP_FORWARD配置失效:

另外因為是程序直接調用命令,所以不會在history命令中留下痕跡。

至于修復方案倒非常簡單,只要一行命令就可以了:

echo 'net.ipv4.ip_forward = 1' >> /usr/lib/sysctl.d/50-default.conf

執行完成后,重啟服務器或使用下面的命令從文件中加載配置:

sysctl -p /usr/lib/sysctl.d/50-default.conf

 

就可以了。

三、小結

Docker daemon服務在啟動的時候會幫幫我們調整很多的配置項,比如這次出事兒的IP_FORWARD配置。

Docker daemon啟用IP_FORWARD功能是因為Docker容器默認的網絡模式(bridge/網橋模式)會給每個容器分配一個私有IP,如果容器需要和外部通信,就需要使用到NAT。NAT需要IP_FORWARD功能支持,否則無法使用。這也解釋了為什么會出現在IP_FORWARD功能停用的情況下,使用bridge模式的容器內外均無法訪問的情況。

只是在Linux下,出于安全考慮,默認是停用IP_FORWARD功能的,Docker daemon服務在啟動時會檢查IP_FORWARD功能是否已經啟用,如果沒有啟用的話,Docker daemon會悄無聲息的臨時啟用此功能,然而臨時啟用的IP_FORWARD功能并不能持久化,會因為其他命令的干擾導致失效。

不過這次的事情告訴了我一個小道理:當出現問題的時候,不要慌,要結合經驗大膽的做出假設并驗證,治標治本。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

標簽:廈門 瀘州 湖北 江西 泰安 江門 內江 玉樹

巨人網絡通訊聲明:本文標題《Docker容器端口映射后突然無法連接的排查過程》,本文關鍵詞  Docker,容器,端口,映射,后,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Docker容器端口映射后突然無法連接的排查過程》相關的同類信息!
  • 本頁收集關于Docker容器端口映射后突然無法連接的排查過程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    丰满亚洲少妇av| 亚洲欧美日韩一区二区 | 在线视频中文字幕一区二区| 精品国产一区二区亚洲人成毛片 | 欧美精品aⅴ在线视频| 欧美国产一区在线| 高清久久久久久| 欧美高清在线一区| caoporn国产一区二区| 91精品国产一区二区三区香蕉| 国产精品视频一二三区| 国产麻豆视频一区二区| 欧美成人在线直播| 亚洲精品一区二区三区影院| 国产美女精品人人做人人爽| 久久亚洲精华国产精华液 | 国产人成亚洲第一网站在线播放| 91精品在线观看入口| 欧美一三区三区四区免费在线看| 欧美日韩夫妻久久| 中文在线一区二区| 91国偷自产一区二区使用方法| 最近中文字幕一区二区三区| 99精品视频在线免费观看| 亚洲欧美日韩人成在线播放| 欧美精品一二三| 九九视频精品免费| 日韩欧美在线影院| 亚洲男人天堂av| 日韩国产精品91| 99久久精品费精品国产一区二区| 国产在线一区观看| 欧美调教femdomvk| 2021中文字幕一区亚洲| 亚洲三级理论片| 黄色小说综合网站| 欧美伦理电影网| 亚洲精品国产第一综合99久久 | 中文子幕无线码一区tr| 欧美日韩一区二区三区四区| 久久电影网站中文字幕 | 色噜噜狠狠色综合欧洲selulu| 青青草一区二区三区| 亚洲男人电影天堂| 国产精品电影一区二区| 欧美成人精精品一区二区频| 成人精品高清在线| 亚洲精品一线二线三线| 亚洲成人黄色小说| 亚洲免费观看高清在线观看| 高清不卡一区二区| 国产在线视频一区二区| 麻豆精品一区二区综合av| 免费亚洲电影在线| 日韩国产在线一| 五月天一区二区| 亚洲第一二三四区| 日本一区二区在线不卡| 在线观看亚洲精品视频| 欧美美女激情18p| 精品少妇一区二区| 日韩女优av电影| 久久久99精品免费观看不卡| 久久久久久久久久久久久久久99| 精品免费日韩av| 欧美电影精品一区二区| 欧美精品 日韩| 正在播放一区二区| 成人av综合在线| 午夜精品视频在线观看| 国产亚洲美州欧州综合国| 不卡电影免费在线播放一区| 三级欧美韩日大片在线看| 中文一区在线播放| 亚洲品质自拍视频网站| 日韩电影在线观看网站| 激情综合五月天| 一本色道久久综合亚洲aⅴ蜜桃| 欧美精品1区2区3区| 91精品国产91热久久久做人人| 精品影院一区二区久久久| 丝袜美腿亚洲综合| 亚洲人吸女人奶水| 精品久久久久久久久久久院品网| 99精品热视频| av中文字幕在线不卡| 成人av网站免费观看| 国产精品99久久久久久宅男| 久色婷婷小香蕉久久| 日韩影院精彩在线| 亚洲电影激情视频网站| 亚洲成a人片在线观看中文| 亚洲精品高清在线观看| 亚洲欧洲日韩av| 亚洲日本欧美天堂| 亚洲男帅同性gay1069| 日日夜夜免费精品| 欧美视频在线一区| 亚洲国产精品久久久男人的天堂| 91丨九色丨蝌蚪富婆spa| 樱花影视一区二区| 欧美在线free| 日韩福利电影在线观看| 日韩欧美一区二区久久婷婷| 久久久99久久精品欧美| 91麻豆精品国产91久久久久| 在线亚洲欧美专区二区| 在线播放视频一区| 国产日韩av一区| 亚洲日本一区二区| 在线免费精品视频| 激情综合色播激情啊| 国产精品福利影院| 欧美日韩一区二区三区在线| 久久久久久一二三区| 国产精品18久久久久| 亚洲裸体在线观看| 欧美一区二区三区在线看| 国产不卡视频在线播放| 亚洲一区二三区| 国产欧美日韩另类一区| 欧美色国产精品| 成人app在线观看| 亚洲成人激情综合网| 欧美高清在线一区二区| 在线视频欧美精品| 韩国中文字幕2020精品| 日韩影院免费视频| 亚洲一区二区三区小说| 欧美一区二区三区电影| 亚洲国产日韩av| 91亚洲精品久久久蜜桃网站| 欧美在线观看禁18| 亚洲风情在线资源站| 欧美日韩成人在线一区| 亚洲3atv精品一区二区三区| 欧美日韩国产一二三| 免费日本视频一区| 亚洲欧美福利一区二区| 亚洲欧洲制服丝袜| 亚洲免费观看高清完整版在线观看熊 | 国产精品888| 天天影视网天天综合色在线播放| 欧美日韩一区不卡| 久久国产精品色婷婷| 亚洲欧美成aⅴ人在线观看| 一本大道久久a久久精品综合| 亚洲久草在线视频| 日韩一区二区在线免费观看| 性欧美大战久久久久久久久| 欧美中文字幕一区| 亚洲欧美视频在线观看视频| 色综合一区二区三区| 国产精品成人一区二区艾草| 久久一留热品黄| 欧美经典三级视频一区二区三区| 国产一区二区三区黄视频| 麻豆精品一区二区三区| 亚洲成av人片一区二区三区| 亚洲高清视频的网址| 一区二区在线观看免费 | 亚洲色图视频网| 亚洲一区二区不卡免费| 亚洲va欧美va人人爽| 美国毛片一区二区三区| 蜜桃av一区二区| 日韩高清在线一区| 成人a区在线观看| 精品日韩av一区二区| 中文字幕 久热精品 视频在线| 国产三级精品视频| 久久久久久久网| 中文字幕一区av| 日韩中文字幕亚洲一区二区va在线 | 自拍偷自拍亚洲精品播放| 国产精品乱人伦中文| 亚洲一区二区三区三| 紧缚捆绑精品一区二区| 91蝌蚪porny九色| 国产不卡免费视频| 国产丶欧美丶日本不卡视频| 亚洲黄一区二区三区| 欧美性欧美巨大黑白大战| 欧美日韩精品一二三区| 日韩视频一区二区三区| 18欧美乱大交hd1984| 美国毛片一区二区三区| 色菇凉天天综合网| 色久优优欧美色久优优| 色噜噜狠狠一区二区三区果冻| 不卡一区二区在线| 欧美色视频在线观看| 久久99精品久久久久久国产越南 | 日韩欧美一级片| 婷婷丁香久久五月婷婷| 在线影院国内精品| 国产精品久久毛片a| 成人免费视频一区二区| 日本一区二区三级电影在线观看 | 91亚洲午夜精品久久久久久|