docker容器互聯(lián)的實現(xiàn)步驟
一、容器互聯(lián)概述:
容器互聯(lián)是除了端口映射外另一種可以與容器通信的方式。端口映射的用途是宿主機網(wǎng)絡(luò)與容器的通信,而容器互聯(lián)是容器之間的通信。
當(dāng)前實現(xiàn)容器互聯(lián)有兩種方式:
一種是把兩個容器放進一個用戶自定義的網(wǎng)絡(luò)中,
另一種是使用--link參數(shù)(已經(jīng)棄用,即將刪除的功能)。
為什么要使用一個單獨的網(wǎng)絡(luò)來連接兩個容器呢?
設(shè)想一下后端容器需要調(diào)用一個數(shù)據(jù)庫環(huán)境,數(shù)據(jù)庫容器和后端服務(wù)容器如果使用上下文中的暴露端口或者映射端口來通信,勢必會把數(shù)據(jù)庫的端口也暴露在外網(wǎng)中,導(dǎo)致數(shù)據(jù)庫容器的安全性大大降低,為了解決這個問題,docker允許用戶建立一個獨立的網(wǎng)絡(luò)來放置相應(yīng)的容器,只有在該網(wǎng)絡(luò)中的容器才能相互通信,外部容器是無法進入這個特定網(wǎng)絡(luò)中的。
一個容器可以同時加入多個網(wǎng)絡(luò),使用不同地址可以訪問不同網(wǎng)絡(luò)中的容器。
二、案例實驗:
1、用戶自定義的網(wǎng)絡(luò):
首先創(chuàng)建兩個容器,命名為cont1和cont2
[root@docker ~]# docker run -itd --name=cont1 busybox [root@docker ~]# docker run -itd --name=cont2 busybox

2、查看當(dāng)前的IP信息:

Cont1pingcont2測試:

接下來創(chuàng)建一個獨立的容器網(wǎng)絡(luò),這里使用bridge驅(qū)動(橋接模式),其他可選的值還有overlay和macvlan。
[root@docker ~]# docker network create -d bridge --subnet 172.25.0.0/16 demo_net [root@docker ~]# docker network ls

使用--subnet和--gateway可以指定子網(wǎng)和網(wǎng)關(guān),現(xiàn)在我們把cont2加入到demo_net中
[root@docker ~]# docker network connect demo_net cont2 [root@docker ~]# docker network inspect demo_net

使用docker network inspect可以查看網(wǎng)絡(luò)中容器的連接狀態(tài)。Container2已經(jīng)在demo_net網(wǎng)絡(luò)中,注意IP地址使自動分配的。
[root@huyang1 ~]# docker exec -it 9a /bin/sh / # ifconfig
對比發(fā)現(xiàn),此時cont2已經(jīng)有了172.25.0.0的網(wǎng)絡(luò)

3、啟動第三個容器:
[root@docker ~]# docker run --network=demo_net --ip=172.25.3.3 -itd --name=cont3 busybox

[root@docker ~]# docker network inspect demo_net

此時,有三個容器,cont1和cont2可以ping通,cont2
和cont3可以ping通,而宿主機可以和三者任意ping通,詳情如下圖:

4、查看三個容器內(nèi)部的網(wǎng)絡(luò):
[root@docker ~]# docker exec -it cont1 ifconfig

[root@docker ~]# docker exec -it cont2 ifconfig

[root@docker ~]# docker exec -it cont3 ifconfig

5、Ping測試:
【cont2】
[root@docker ~]# docker exec -it cont2 ping 172.17.0.2 [root@docker ~]# docker exec -it cont2 ping 172.25.3.3

【cont1】
[root@docker ~]# docker exec -it cont1 ping 172.17.0.2 [root@docker ~]# docker exec -it cont1 ping 172.25.0.2 [root@docker ~]# docker exec -it cont1 ping 172.25.3.3

【cont3】
[root@docker ~]# docker exec -it cont3 ping 172.17.0.2 [root@docker ~]# docker exec -it cont3 ping 172.25.0.2 [root@docker ~]# docker exec -it cont3 ping 172.17.0.3

Ps備注:
當(dāng)發(fā)生三個容器cont1/2/3可以相互之間都能ping通,這時候,需要重啟容器(systemctl restart docker),再開啟測試?。?!
到此這篇關(guān)于docker容器互聯(lián)的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)docker容器互聯(lián)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker如何使用nginx搭建tomcat集群(圖文詳解)
這篇文章主要介紹了Docker使用nginx搭建tomcat集群的教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12
部署Prometheus+Grafana監(jiān)控平臺實踐
文章介紹了如何在宿主機上配置Prometheus和Grafana,并使用NodeExporter監(jiān)控Linux服務(wù)器,通過Docker部署Prometheus和Grafana,并在Prometheus中添加NodeExporter作為數(shù)據(jù)源,最后,通過Grafana導(dǎo)入儀表盤來可視化監(jiān)控數(shù)據(jù)2026-01-01
利用Docker分層構(gòu)建優(yōu)化鏡像大小的實現(xiàn)
合適docker鏡像文件大小不僅影響容器啟動效率,也影響資源占用效率,本文介紹如何利用分層方式構(gòu)建docker鏡像,采用多種方式避免鏡像文件太大而影響性能,需要的朋友可以參考下2025-01-01
Docker拉鏡像報錯error pulling image configuration:
這篇文章主要介紹了Docker拉鏡像報錯error pulling image configuration: unknown blob的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
supervisor下的Dockerfile的多服務(wù)鏡像封裝操作
這篇文章主要介紹了supervisor下的Dockerfile的多服務(wù)鏡像封裝操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

