久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Docker容器間通信的三種方式分別是什么

158次閱讀
沒有評論

共計 1280 個字符,預計需要花費 4 分鐘才能閱讀完成。

Docker 容器間通信的三種方式分別是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

容器之間可通過 IP,Docker DNS Server 或 joined 容器三種方式通信。

IP 通信

兩個容器要能通信,必須要有屬于同一個網絡的網卡。

滿足這個條件后,容器就可以通過 IP 交互了。具體做法是在容器創建時通過  –network  指定相應的網絡,或者通過  docker network connect  將現有容器加入到指定網絡。

Docker DNS Server

通過 IP 訪問容器雖然滿足了通信的需求,但還是不夠靈活。因為我們在部署應用之前可能無法確定 IP,部署之后再指定要訪問的 IP 會比較麻煩。對于這個問題,可以通過 docker 自帶的 DNS 服務解決。

從 Docker 1.10 版本開始,docker daemon 實現了一個內嵌的 DNS server,使容器可以直接通過“容器名”通信。方法很簡單,只要在啟動時用  –name  為容器命名就可以了。

下面啟動兩個容器 bbox1 和 bbox2:

docker run -it –network=my_net2 –name=bbox1 busybox

docker run -it –network=my_net2 –name=bbox2 busybox

然后,bbox2 就可以直接 ping 到 bbox1 了

使用 docker DNS 有個限制:只能在 user-defined 網絡中使用。也就是說,默認的 bridge 網絡是無法使用 DNS 的。下面驗證一下:

創建 bbox3 和 bbox4,均連接到 bridge 網絡。

docker run -it –name=bbox3 busybox

docker run -it –name=bbox4 busybox

bbox4 無法 ping 到 bbox3。

joined 容器

joined 容器是另一種實現容器間通信的方式。

joined 容器非常特別,它可以使兩個或多個容器共享一個網絡棧,共享網卡和配置信息,joined 容器之間可以通過 127.0.0.1 直接通信。請看下面的例子:

先創建一個 httpd 容器,名字為 web1。

docker run -d -it –name=web1 httpd

然后創建 busybox 容器并通過  –network=container:web1  指定 jointed 容器為 web1

請注意 busybox 容器中的網絡配置信息,下面我們查看一下 web1 的網絡

看!busybox 和 web1 的網卡 mac 地址與 IP 完全一樣,它們共享了相同的網絡棧。busybox 可以直接用 127.0.0.1 訪問 web1 的 http 服務。

joined 容器非常適合以下場景:

不同容器中的程序希望通過 loopback 高效快速地通信,比如 web server 與 app server。

希望監控其他容器的網絡流量,比如運行在獨立容器中的網絡監控程序。

關于 Docker 容器間通信的三種方式分別是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注丸趣 TV 行業資訊頻道了解更多相關知識。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計1280字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 阿城市| 察隅县| 靖安县| 东辽县| 青浦区| 郎溪县| 云和县| 安图县| 江达县| 财经| 巴中市| 万年县| 左权县| 沾益县| 诏安县| 佛学| 安陆市| 新河县| 青岛市| 云安县| 秦安县| 甘南县| 醴陵市| 仁怀市| 五原县| 明溪县| 仁化县| 清镇市| 小金县| 阿坝| 葫芦岛市| 汤阴县| 广宁县| 长丰县| 额济纳旗| 苍山县| 柘荣县| 游戏| 孝昌县| 怀仁县| 平凉市|