佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Docker容器互相連接三種實(shí)現(xiàn)方法詳解

Docker容器互相連接三種實(shí)現(xiàn)方法詳解

熱門標(biāo)簽:美圖手機(jī) 智能手機(jī) 阿里云 使用U盤裝系統(tǒng) 檢查注冊表項(xiàng) 硅谷的囚徒呼叫中心 百度競價點(diǎn)擊價格的計算公式 網(wǎng)站建設(shè)

docker容器間的互連通信有三種方法:

  • docker內(nèi)部網(wǎng)絡(luò):不夠靈活強(qiáng)大,不推薦
  • docker networking:1.9或更新版本,推薦使用
  • docker鏈接:1.9之前版本適用。

1.docker內(nèi)部網(wǎng)絡(luò)

涉及docker自己的網(wǎng)絡(luò)棧。

安裝docker后,系統(tǒng)會創(chuàng)建一個新的網(wǎng)絡(luò)接口,名字是docker0,用于連接容器和宿主機(jī),IP范圍是172.16-172.30,

每個docker容器都會在這個接口上分配一個IP地址。

docker每創(chuàng)建一個容器就會創(chuàng)建一組互聯(lián)的網(wǎng)絡(luò)接口,一端是容器里的eth0接口,另一端則在宿主機(jī)以veth開頭命名,

通過把每個veth接口綁定到docker0網(wǎng)橋,docker創(chuàng)建了一個虛擬子網(wǎng),這個子網(wǎng)由宿主機(jī)和所有的docker容器共享,

實(shí)現(xiàn)容器和宿主機(jī)的通信連接,注意只有容器運(yùn)行時veth接口才存在。

用內(nèi)部網(wǎng)絡(luò)實(shí)現(xiàn)容連互聯(lián)的弊端:

  • 要在容器的應(yīng)用程序里對另一個容器的IP地址做硬編碼;
  • 容器重啟后,IP地址可能會改變;
  • 不夠方便和靈活。

2.docker networking

容器之間的連接用網(wǎng)絡(luò)創(chuàng)建。

允許用戶創(chuàng)建自己的網(wǎng)絡(luò),容器通過這個網(wǎng)絡(luò)互相通信;

可以跨越不同的宿主機(jī)來通信,網(wǎng)絡(luò)配置也更靈活;

可以在無需更新連接的情況下,停止、啟動或者重啟容器;

不必事先創(chuàng)建容器再去連接它,也不必關(guān)心容器的運(yùn)行順序,可以在網(wǎng)絡(luò)內(nèi)部獲得容器名解析和發(fā)現(xiàn);

和docker compose以及swarm進(jìn)行了集成;

在docker網(wǎng)絡(luò)內(nèi)部啟動的容器,會感知到所有在這個網(wǎng)絡(luò)下運(yùn)行的容器,

并通過/etc/hosts文件將這些容器的地址保存到本地DNS中,
網(wǎng)絡(luò)內(nèi)的任何主機(jī)都可以使用hostname或hostname.netname的形式來被解析訪問,

如果任何一個容器重啟了,其IP地址會自動在/etc/hosts文件中更新,

測試中發(fā)現(xiàn)/etc/hosts文件中好像沒有新增其他容器的地址,但也能互相ping通;

一個容器可以同時加入多個網(wǎng)絡(luò),所以可以創(chuàng)建非常復(fù)雜的網(wǎng)絡(luò)模型;

  • docker network create 創(chuàng)建一個網(wǎng)絡(luò)
  • docker network inspect 查看網(wǎng)絡(luò)的詳細(xì)信息
  • docker network ls 列出當(dāng)前系統(tǒng)中的所有網(wǎng)絡(luò)
  • docker network connect 將已有容器連接到一個網(wǎng)絡(luò)
  • docker network disconnect 從網(wǎng)絡(luò)中斷開一個容器
  • docker network rm 刪除一個或多個網(wǎng)絡(luò)
  • docker network prune 刪除所有未使用的網(wǎng)絡(luò)

3.docker鏈接

在鏈接過程中要引用到容器的名字,且只能工作于同一臺宿主機(jī)中。

在docker run啟動容器時用參數(shù) --link 創(chuàng)建兩個容器間的 客戶-服務(wù) 鏈接,

需要兩個參數(shù),一個是鏈接容器的名字,一個是鏈接的別名,即 --link redis:db,

被鏈接的容器是服務(wù),鏈接讓服務(wù)容器能夠和客戶容器通信,

客戶容器可直接訪問服務(wù)容器的任意公開端口,所以服務(wù)容器的端口不需要對本地宿主機(jī)公開,相對更加安全;

可以把多個客戶容器鏈接到同一個服務(wù)容器,也可通過指定多次--link來鏈接到多個服務(wù)容器,

docker在容器的/etc/hosts文件和包含鏈接信息的環(huán)境變量里寫入鏈接信息;

無論采用哪種方式,都可以創(chuàng)建一個Web應(yīng)用程序棧,包含以下組件:

  • 一個Web服務(wù)器容器
  • 一個Redis數(shù)據(jù)庫容器
  • 兩個容器間的一個安全鏈接

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:賀州 懷化 通遼 黃山 山南 湘潭 湖北 煙臺

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Docker容器互相連接三種實(shí)現(xiàn)方法詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    右玉县| 巴彦淖尔市| 关岭| 聂拉木县| 那坡县| 从江县| 绵竹市| 锡林郭勒盟| 南岸区| 综艺| 南汇区| 胶州市| 宣城市| 灵宝市| 安徽省| 阿尔山市| 德保县| 敦化市| 玉龙| 锦屏县| 湄潭县| 望都县| 安西县| 大新县| 乐都县| 绩溪县| 河东区| 民勤县| 中宁县| 五指山市| 洞口县| 新宾| 即墨市| 苍南县| 从化市| 宕昌县| 张家港市| 永康市| 湘阴县| 十堰市| 临颍县|