1. 程式人生 > >docker容器通過宿主機ip中轉實現容器之間相互呼叫

docker容器通過宿主機ip中轉實現容器之間相互呼叫

一般每個容器,都會對映一個埠到宿主機中,方便在宿主機上訪問,例如ngnix,mysql,redis等等。

但是我們有一種常見的場景,就是a容器,需要通過宿主機的埠對映,呼叫b容器的服務,這裡如果在a容器內部配置localhost/127.0.0.1/0.0.0.0:port都是不會起作用的,因為容器和容器之間的ip是隔離的,無法互相通過本地埠訪問。

一個辦法就是在docker run中把宿主機的埠對映到容器中,但是這樣最痛苦的地方就是,每當我在容器中想多新增一個服務,那就得重新run。

個人認為更好的辦法,是獲取宿主機的ip, 然後在容器內部配置宿主機的ip, 就可以訪問到b容器的服務。參考這裡其實在docker run中指定環境變數的辦法也不錯,不過在docker公服下載的時候,往往都是直接拷貝現成run命令

)得到方法:

/sbin/ip route|awk ‘/default/ { print $3 }’

得到的宿主機ip, 加上對應的埠,就可以訪問其他容器的服務了

相關推薦

docker容器通過宿主機ip中轉實現容器之間相互呼叫

一般每個容器,都會對映一個埠到宿主機中,方便在宿主機上訪問,例如ngnix,mysql,redis等等。 但是我們有一種常見的場景,就是a容器,需要通過宿主機的埠對映,呼叫b容器的服務,這裡如果在a容器內部配置localhost/127.0.0.1/0.0.0

Spring Cloud:多環境配置、註冊中心安全認證、容器宿主機IP註冊

記錄一下搭建 Spring Cloud 過程中踩過的一些坑。寫這篇隨筆時候不知道為什麼想到了看過的一個短片《斷崖》,看的時候真的感受到了女主的絕望和無助。感覺自己就像女主一樣,我在自己技術水平的坑裡努力的爬著,好的是我爬出來了,壞的是外面還有一個更大的坑!!!人生路漫漫,且爬且珍惜! Spring 版本

如何獲取docker宿主機ip

在開發除錯過程中,很可能遇到類似的情況: 宿主機跑著一個DB,不管是MySQL還是MongoDB,總之跑在宿主機,docker裡執行著應用程式,但程式要連宿主機的DB時,不知道其IP咋辦? 解決方案: alias hostip="ifconfig en0 | grep inet | grep -v inet

docker中mysql安裝,並使用宿主機ip遠程登錄

宿主機 登錄 nbsp 地址 mysql安裝 ont oot log lib docker 安裝 1、拉取鏡像 docker pull mysql:5.7 2、運行容器 docker run --name mysql -p 3306

Fedora14 使用虛擬機器橋接上網 靜態配置固定IP宿主機IP在同一網段的方法 及 若干問題解決(NFS掛載第一步)

要進行NFS掛載,第一步是使虛擬機器橋接上網,橋接上網下面的小框 不用勾選。下面要將其IP地址和宿主機IP配置在同一網段,破費周折終於成功。 記錄下步驟: 一,我最初是參照http://hi.baidu.com/%D1%E3%C9%F9%C1%F4/blog/item/b0

Docker(三):利用Kubernetes實現容器的彈性伸縮

一、前言   前兩章有的介紹docker與Kubernetes。docker是專案執行的容器,Kubernetes則是隨著微服務架構的演變docker容器增多而進行其編排的重要工具。Kubernetes不僅可以對容器進行檢測狀態,還能對其自動擴容縮容。下面就來介紹介紹Kubernetes是如何自動的擴容縮容的

宿主機與Virtual虛擬機器之間共享資料夾配置教程 (Win10 Ubuntu16.04)

記錄一下自己上午的折騰,終於實現了宿主機與Virtual虛擬機器之間共享資料夾,以後傳檔案再也不用自己給自己發郵件了(*/ω\*)。但是雙向拷貝功能仍然無法實現。 關於雙向拷貝: 參考網上的一些教程,我設定了這裡: 接著,需要再給虛擬機器安裝一下增強功能。需要啟動虛擬機器

vue拖拽克隆元件 vue.draggable API options實現盒子之間相互拖拽排序克隆clone

vue拖拽克隆clone元件API, vue.draggable實現盒子之間相互拖拽排序克隆(網上資源整理的文件) 效果圖:   首先需要安裝vuedraggable依賴包: npm install vuedraggable --save 複製vue html程式碼到專案:

JAVA中實現執行緒相互呼叫或回撥

使用場景: 在工作中,遇到同時兩個執行緒A和B,按照通常的理解,A呼叫B以後A繼續執行,但是在我目前的情況下需要B執行完畢以後才能繼續執行A後面的程式,於是有了此文章。 請看程式碼: 首先定義一個介面

Java SpringCloud系列(四) —— Feign(偽RPC)模式實現服務間相互呼叫

首先,整個課程系列需要同學們有一定的基礎技能,分別是java、springboot、github以及基礎的Linux的知識,其中springboot是各位同學一定要掌握的,如果沒有springbo

Docker容器加載宿主機的hosts解析

doc name 文件 自定義日誌 項目 har 進入容器 主機 刪除 前言   公司一直在用傳統的tomcat下丟war包的架構體系,隨著項目的增多、服務器數量的增多、需要為此花費很多時間在不同服務器的系統環境問題上。為了技術的與時俱進和工作的運維效率等方面,筆者引入d

宿主機docker容器之間免密碼ssh連結,容器容器之間ssh免密碼連線

轉:https://segmentfault.com/a/1190000012484646 若要實現免密登陸,意味著無論是宿主機,還是容器都要彼此互動公鑰: 容器A傳送自身公鑰給中心機器,統一由中心機器,回發全部需要ssh到容器A的公鑰資訊,任何一個新加入的容器,傳送資訊給中心機器,則中心機

docker容器埠影射宿主機

#將容器的8080埠對映宿主機埠8080 –name:給容器起的名稱 docker run -d -p 8080:8080 --name=“tomcat7” -id 1130e687fa3c /bin/bash

docker macvlan實現容器ip和區域網互通

原文:http://qiankunli.github.io/2017/01/13/docker_macvlan.html 簡介 macvlan基礎 如果採用硬體支援的方式來設定vlan,交換機是劃分區域網的關鍵裝置,所以本文說xx vlan,主要是針對交換機說的。

解決docker 容器內訪問宿主機“No route to host”的問題

解決docker 容器內訪問宿主機“No route to host”的問題   請順序執行以下命令: 1 nmcli connection modify docker0 connection.zone trusted 2 3 systemctl stop NetworkManager

Docker容器時間與宿主機差8小時

近日測試提了個bug說是登入時間比北京時間晚了8個小時,發現是docker容器的問題,Linux下用date檢視的時間與在docker容器裡面用date檢視的時間相差8小時,docker容器裡預設是 UTC 時間,本人用一下兩種方式嘗試了均可以,自己做個筆記: 第一種: 新

linux下docker通過掛載資料捲到 mysql實現容器配置本地化

前言:當希望在本地上配置容器中的mysql時,發現一個問題,本地需要完整的配置檔案目錄,如果本地是空目錄,那麼容器中的配置目錄也是空的所以不能執行映象,這裡解決這個問題,思路是任意執行一個容器,把裡面的配置目錄複製到本地,然後刪除這個容器,再建立新的容器,並把複製出來的配置目錄和容器中的配置目錄同步

docker容器中怎麼訪問宿主機

docker搭建了lnmp環境後,如果需要訪問安裝在宿主機上的資料庫或中介軟體,是不能直接使用127.0.0.1這個ip的,這個ip在容器中指向容器自己,那麼應該怎麼去訪問宿主機呢:         例如你的docker環境的虛擬IP是192.168.99.100,那麼宿主

(菜汪學docker)docker+macVlan實現容器主機

本汪接觸macvlan沒有幾天,還是分享一些我的學習資料吧,學習總結就不好意思給了。 macvlan對於伺服器和交換機來說還是有點區別的,下面是大神們的資料 下面進去入實驗, 上一張比較lo

(六) Docker 修改容器的內容—— 容器 nginx 反向代理宿主機 tomcat

前言 上一篇文章(五) Docker 執行 nginx介紹了 Docker 中安裝 nginx 的一些操作,但是沒有對 nginx 預設的配置進行任何修改,這不符合實際的運用場景,本文將介紹修改容器內容的兩種方式。 先了解一下情況