Linux 下 Docker 埠對映到宿主機後 外部無法訪問對應宿主機埠
問題描述
前段時間使用 Docker 裝了 GitLab,SSH 配置都已經配置完畢,容器埠和宿主機埠也對映完畢。Firewall 和 SELinux 也已經關閉。
1、在宿主機上訪問對應的埠使用 SSH 拉取 GitLab 上的程式碼正常
2、在容器中訪問容器中對應 SSH 的埠正常
3、在外部網路訪問 Docker 宿主機的對應埠使用 SSH 拉取程式碼異常
原因
這是因為我的宿主機沒有開啟 ip 轉發
功能,導致外部網路訪問宿主機對應埠是沒能轉發到 Docker Container 所對應的埠上。
解決問題
這裡記錄一下:Linux 發行版預設情況下是不開啟 ip 轉發
功能的。這是一個好的做法,因為大多數人是用不到 ip 轉發的,但是如果我們架設一個 Linux 路由或者 VPN 服務我們就需要開啟該服務了。
在 Linux 中開啟 ip 轉發的核心引數為:net.ipv4.ip_forward
,檢視是否開啟 ip轉發:
cat /proc/sys/net/ipv4/ip_forward # 0:未開啟,1:已開啟
- 修改
net.ipv4.ip_forward
的值:
sysctl -w net.ipv4.ip_forward=1
# 或者
echo 1 > /proc/sys /net/ipv4/ip_forward
上面的這種方式無需重啟,不過也只能算是
臨時生效
。它的效果會隨著計算機的重啟而失效。
- 永久生效的 ip 轉發
vim /etc/sysctl.conf # 在此檔案中新增 "net.ipv4.ip_forward = 1",儲存退出
# 立即生效
sysctl -p /etc/sysctl.conf
# 在紅帽發行版的 Linux 系統中也可以通過重啟網絡卡來立即生效
service network restart # CentOS 6
systemctl restart network # CentOS 7
# 而在 debian/ubuntu 系列的發行版則用
/etc/init.d/procps.sh restart
相關推薦
Linux 下 Docker 埠對映到宿主機後 外部無法訪問對應宿主機埠
問題描述 原因 解決問題 問題描述 前段時間使用 Docker 裝了 GitLab,SSH 配置都已經配置完畢,容器埠和宿主機埠也對映完畢。Firewall 和 SELinux 也已經關閉。 1、在宿主機上訪問對應的埠使用
linux下用iptables做本機埠轉發方法
linux下用iptables做本機埠轉發方法 轉載 2015年01月15日 11:06:02 標籤: linux 33450 一 :從一臺機到另一臺機埠轉發 啟用網絡卡轉發功能 #echo 1 > /proc/sys/net/ipv4/ip_forward
virtualbox下centos與Windows宿主機建立共享文件夾
virtual共享文件夾一,設置共享文件夾在Windows中建立共享文件夾(F:/share)在Virtualbox中設置共享文件夾的路徑通過這一步操作,就可以將在Windows中建立的文件夾映射到Virtualbox中了。二,安裝gcc,make,kernel-devel在執行增強工具的安裝腳本的時候,需要
linux下find查找文件後使用xargs和exec進行刪除、壓縮處理。
find exec xargsmtime 文件內容上次修改時間 atime 文件被讀取或訪問的時間 ctime 文件狀態變化時間 mtime 和 atime 的含義都是很容易理解的,而 ctime 則需要更多的解釋。由於 inode 維護著每個文件上的元數據,因此,如果與文件有關的元數據發生變化,
linux 下安裝Mysql5.7以後版本後不知道密碼如何登陸
linux 下安裝Mysql5.7以後版本後不知道密碼如何登陸 第一次在linux下安裝mysql,安裝成功以後不知道密碼無法登陸,看了好多部落格說初始密碼為空,然而並不是這樣,輸入空密碼會報錯,後來才知道和版本有關。5.7之前的版本預設是沒有密碼的,只需在伺服器上直接登入,甚至使用者名
Linux下C語言獲取本機IP地址
#include <sys/ioctl.h> #include <net/if.h> #include <arpa/inet.h> char* GetLocalIp() { int MA
Linux下docker的安裝和使用
docker安裝與使用 1. 安裝Docker yum install docker.x86_64 2 啟動Docker service docker start 3把Docker 加入到開機自
DOCKER容器與宿主機同網段互相通訊
相關閱讀: 博主最近在解決docker與宿主機同網段通訊的問題,寫此文章記錄一下整個過程。 遇到的問題 博主用兩臺docker容器做datanode,當時配置Docker網路時,使用了Bridge模式,docker0網段(172.
linux下docker和主機之間的檔案拷貝
從主機複製到容器sudo docker cp host_path containerID:container_path 從容器複製到主機sudo docker cp containerID:container_path host_path
[轉載]linux下mysql 8.0忘記密碼後重置密碼
實在扎心,關鍵時刻忘記了密碼! 1、免密碼登陸 找到mysql配置檔案:my.cnf, 在【mysqld】模組新增:skip-grant-tables 儲存退出; 2、使配置生效 重啟mysql服務: service mysqld restart; 3、
linux下docker的安裝使用,jar打包docker映象
yum install docker 安裝docker service docker start 啟動docker docker ps 檢視docker容器 docker pull redis 下載redis映象 docker images 檢視映象
如何在docker容器和宿主機之間複製檔案
直接上程式碼 sudo docker cp txcrm2:/home/log/production.log /system/logs ##仔細看 txcrm2是映象id ,後面就是檔案路徑
【docker】docker容器和宿主機之間檔案互傳,互相拷貝
原文地址:https://www.cnblogs.com/areyouready/p/8973495.html 【注意:命令中符號均為英文符號】 1、從容器裡面拷檔案到宿主機 答:在宿主機裡面執行以下命令  
linux下docker通過掛載資料捲到 mysql實現容器配置本地化
前言:當希望在本地上配置容器中的mysql時,發現一個問題,本地需要完整的配置檔案目錄,如果本地是空目錄,那麼容器中的配置目錄也是空的所以不能執行映象,這裡解決這個問題,思路是任意執行一個容器,把裡面的配置目錄複製到本地,然後刪除這個容器,再建立新的容器,並把複製出來的配置目錄和容器中的配置目錄同步
docker學習7--宿主機和容器時間不一致問題
啟動一個以centos為基礎的映象,進入容器內date '+%Y-%m-%d %H:%M:%S'檢視時間,發現容器時間和宿主機不一致。 一臺宿主機可以有多個docker容器,宿主機的
docker容器與宿主機之間內容拷貝
從容器內拷貝檔案到主機上 docker cp <containerId>:/file/path/within/container /host/path/target 例如: [[email protected] hadoop]# docke
docker系列-07.docker容器和宿主機相互拷貝檔案
1.從docker容器中將檔案拷貝到宿主機: docker cp 容器名:容器中的檔案路徑 要拷貝到宿主機中的檔案路徑 例: docker cp elk:/etc/pki/tls/priva
Docker 容器與宿主機網段衝突導致網路無法 ping 通的解決方案
docker 容器網路預設使用 bridge 橋接模式,正常情況下,容器會使用 daemon.json 中定義的虛擬網橋來與宿主機進行通訊。 最近更新 Docker for mac 之後,發現以前容器中可以訪問的區域網內服務(使用宿主機所在的區域網 IP 訪問),變得不可訪問了。一開始以為是新版本改了預設網
Linux下PPTPD搭建VPN伺服器連線後無法上外網及619錯誤的解決辦法
最近在搭建VPN伺服器時卻遇到了困難 先是出現619錯誤,接著是連線後無法上外網 下面一一給出解決辦法 解決619錯誤 619錯誤的原因有很多,下面給出原因列表,供大家排查 1、logwtmp衝突 解決:編輯 /etc/pptpd.conf,找到logwtmp用#註釋掉
linux下Docker容器意外停止的恢復方法
在執行中的docker容器遇到意外情況,可能會自動終止執行,例如磁碟空間不足。 解決辦法: 1、找到/var/lib/docker/containers資料夾下的所有容器ID 2、執行命令,檢視容器資