1. 程式人生 > >Linux 下 Docker 埠對映到宿主機後 外部無法訪問對應宿主機埠

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

virtualboxcentos與Windows宿主建立共享文件夾

virtual共享文件夾一,設置共享文件夾在Windows中建立共享文件夾(F:/share)在Virtualbox中設置共享文件夾的路徑通過這一步操作,就可以將在Windows中建立的文件夾映射到Virtualbox中了。二,安裝gcc,make,kernel-devel在執行增強工具的安裝腳本的時候,需要

linuxfind查找文件使用xargs和exec進行刪除、壓縮處理。

find exec xargsmtime 文件內容上次修改時間   atime 文件被讀取或訪問的時間   ctime 文件狀態變化時間   mtime 和 atime 的含義都是很容易理解的,而 ctime 則需要更多的解釋。由於 inode 維護著每個文件上的元數據,因此,如果與文件有關的元數據發生變化,

linux 安裝Mysql5.7以後版本不知道密碼如何登陸

linux 下安裝Mysql5.7以後版本後不知道密碼如何登陸 第一次在linux下安裝mysql,安裝成功以後不知道密碼無法登陸,看了好多部落格說初始密碼為空,然而並不是這樣,輸入空密碼會報錯,後來才知道和版本有關。5.7之前的版本預設是沒有密碼的,只需在伺服器上直接登入,甚至使用者名

LinuxC語言獲取本IP地址

#include <sys/ioctl.h> #include <net/if.h> #include <arpa/inet.h>   char* GetLocalIp() { int MA

Linuxdocker的安裝和使用

docker安裝與使用 1. 安裝Docker yum install docker.x86_64 2 啟動Docker service docker start 3把Docker 加入到開機自

DOCKER容器與宿主同網段互相通訊

相關閱讀: 博主最近在解決docker與宿主機同網段通訊的問題,寫此文章記錄一下整個過程。 遇到的問題 博主用兩臺docker容器做datanode,當時配置Docker網路時,使用了Bridge模式,docker0網段(172.

linuxdocker主機之間的檔案拷貝

從主機複製到容器sudo docker cp host_path containerID:container_path 從容器複製到主機sudo docker cp containerID:container_path host_path

[轉載]linuxmysql 8.0忘記密碼重置密碼

實在扎心,關鍵時刻忘記了密碼! 1、免密碼登陸 找到mysql配置檔案:my.cnf, 在【mysqld】模組新增:skip-grant-tables 儲存退出; 2、使配置生效 重啟mysql服務: service mysqld restart; 3、

linuxdocker的安裝使用,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 ,後面就是檔案路徑

dockerdocker容器和宿主之間檔案互傳,互相拷貝

原文地址:https://www.cnblogs.com/areyouready/p/8973495.html     【注意:命令中符號均為英文符號】 1、從容器裡面拷檔案到宿主機      答:在宿主機裡面執行以下命令    

linuxdocker通過掛載資料捲到 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 訪問),變得不可訪問了。一開始以為是新版本改了預設網

LinuxPPTPD搭建VPN伺服器連線無法上外網及619錯誤的解決辦法

最近在搭建VPN伺服器時卻遇到了困難 先是出現619錯誤,接著是連線後無法上外網 下面一一給出解決辦法 解決619錯誤 619錯誤的原因有很多,下面給出原因列表,供大家排查 1、logwtmp衝突 解決:編輯 /etc/pptpd.conf,找到logwtmp用#註釋掉

linuxDocker容器意外停止的恢復方法

在執行中的docker容器遇到意外情況,可能會自動終止執行,例如磁碟空間不足。 解決辦法: 1、找到/var/lib/docker/containers資料夾下的所有容器ID 2、執行命令,檢視容器資