Docker映射端口telnet不通的解決過程
問題描述
我在自己虛擬機的docker上運行的容器綁定的端口突然跟我的電腦通不了了,在docker啟動之后,我使用了netstat -ntalp | grep 3000 發(fā)現端口監(jiān)聽shi是正常的,然后就到本機電腦telnet過去發(fā)現不通,
一開始懷疑是不是我重啟過虛擬機導致防火墻又開啟了(臨時關閉),但是在虛擬機里面啟動了個redis,本機確實能telent6379端口的,而且檢查firewalld 和selinux發(fā)現都是處于關閉狀態(tài),
說明出問題的只是docker的轉發(fā)出了問題,那轉發(fā)得先看轉發(fā)的配置鏈是否正確,
需要使用iptables -t nat -nL 命令來查看,看起來是對的,于是在想會不會是其他的有問題。
上網找了網友的資料發(fā)現
可能是轉發(fā)得功能沒有開,畢竟Linux轉發(fā)要開啟內核轉發(fā)功能net.ipv4.ip_forward,于是我們可以先檢查內核轉發(fā)是否打開:
輸入
sysctl net.ipv4.ip_forward發(fā)現

發(fā)現狀態(tài)為0代表內核轉發(fā)沒有打開,估計問題就是這個造成的,于是打開內核轉發(fā)參數
是處于沒有打開的狀態(tài)
于是我們需要打開它:
[root@dev1 opt]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@dev1 opt]# sysctl -p
然后本機再次請求發(fā)現可以telnet通了。
為什么會出現這個問題,其實是因為docker 的proxy在1.7 版本之后全部都依賴于iptables了,所以docker轉發(fā)的時候實際上是在iptables上創(chuàng)建了一個轉發(fā)規(guī)則,然后根據這個轉發(fā)規(guī)則來進行轉發(fā)而iptables需要轉發(fā)就必須要開啟網卡轉發(fā)功能,也就是net.ipv4.ip_forward要一直處于開啟狀態(tài)。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Windows Docker 部署 SolrCloud的方法步驟
本文主要介紹了Windows Docker 部署 SolrCloud的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-10-10
Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟
這篇文章主要介紹了Gogs+Jenkins+Docker 自動化部署.NetCore,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06
Docker數據卷掛載命令volume(-v)與mount的使用總結
本文主要介紹了Docker數據卷掛載命令volume(-v)與mount的使用總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
使用Docker安全地部署OpenClaw(龍蝦)的詳細步驟
OpenClaw (龍蝦) 是一個強大的個人 AI 助手,它可以連接各種消息平臺并執(zhí)行工具,本文介紹如何通過 Docker Compose 安全地部署 OpenClaw,并解析其中的關鍵配置,需要的朋友可以參考下2026-03-03

