您好,登錄后才能下訂單哦!
小編這次要給大家分享的是詳解Docker容器如何互相連接,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
docker容器間的互連通信有三種方法:
1.docker內部網絡
涉及docker自己的網絡棧。
安裝docker后,系統會創建一個新的網絡接口,名字是docker0,用于連接容器和宿主機,IP范圍是172.16-172.30,
每個docker容器都會在這個接口上分配一個IP地址。
docker每創建一個容器就會創建一組互聯的網絡接口,一端是容器里的eth0接口,另一端則在宿主機以veth開頭命名,
通過把每個veth接口綁定到docker0網橋,docker創建了一個虛擬子網,這個子網由宿主機和所有的docker容器共享,
實現容器和宿主機的通信連接,注意只有容器運行時veth接口才存在。
用內部網絡實現容連互聯的弊端:
2.docker networking
容器之間的連接用網絡創建。
允許用戶創建自己的網絡,容器通過這個網絡互相通信;
可以跨越不同的宿主機來通信,網絡配置也更靈活;
可以在無需更新連接的情況下,停止、啟動或者重啟容器;
不必事先創建容器再去連接它,也不必關心容器的運行順序,可以在網絡內部獲得容器名解析和發現;
和docker compose以及swarm進行了集成;
在docker網絡內部啟動的容器,會感知到所有在這個網絡下運行的容器,
并通過/etc/hosts文件將這些容器的地址保存到本地DNS中,
網絡內的任何主機都可以使用hostname或hostname.netname的形式來被解析訪問,
如果任何一個容器重啟了,其IP地址會自動在/etc/hosts文件中更新,
測試中發現/etc/hosts文件中好像沒有新增其他容器的地址,但也能互相ping通;
一個容器可以同時加入多個網絡,所以可以創建非常復雜的網絡模型;
3.docker鏈接
在鏈接過程中要引用到容器的名字,且只能工作于同一臺宿主機中。
在docker run啟動容器時用參數 --link 創建兩個容器間的 客戶-服務 鏈接,
需要兩個參數,一個是鏈接容器的名字,一個是鏈接的別名,即 --link redis:db,
被鏈接的容器是服務,鏈接讓服務容器能夠和客戶容器通信,
客戶容器可直接訪問服務容器的任意公開端口,所以服務容器的端口不需要對本地宿主機公開,相對更加安全;
可以把多個客戶容器鏈接到同一個服務容器,也可通過指定多次--link來鏈接到多個服務容器,
docker在容器的/etc/hosts文件和包含鏈接信息的環境變量里寫入鏈接信息;
無論采用哪種方式,都可以創建一個Web應用程序棧,包含以下組件:
看完這篇關于詳解Docker容器如何互相連接的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。