docker容器互聯(lián)的實(shí)現(xiàn)步驟
一、容器互聯(lián)概述:
容器互聯(lián)是除了端口映射外另一種可以與容器通信的方式。端口映射的用途是宿主機(jī)網(wǎng)絡(luò)與容器的通信,而容器互聯(lián)是容器之間的通信。
當(dāng)前實(shí)現(xiàn)容器互聯(lián)有兩種方式:
一種是把兩個(gè)容器放進(jìn)一個(gè)用戶自定義的網(wǎng)絡(luò)中,
另一種是使用--link參數(shù)(已經(jīng)棄用,即將刪除的功能)。
為什么要使用一個(gè)單獨(dú)的網(wǎng)絡(luò)來連接兩個(gè)容器呢?
設(shè)想一下后端容器需要調(diào)用一個(gè)數(shù)據(jù)庫環(huán)境,數(shù)據(jù)庫容器和后端服務(wù)容器如果使用上下文中的暴露端口或者映射端口來通信,勢必會把數(shù)據(jù)庫的端口也暴露在外網(wǎng)中,導(dǎo)致數(shù)據(jù)庫容器的安全性大大降低,為了解決這個(gè)問題,docker允許用戶建立一個(gè)獨(dú)立的網(wǎng)絡(luò)來放置相應(yīng)的容器,只有在該網(wǎng)絡(luò)中的容器才能相互通信,外部容器是無法進(jìn)入這個(gè)特定網(wǎng)絡(luò)中的。
一個(gè)容器可以同時(shí)加入多個(gè)網(wǎng)絡(luò),使用不同地址可以訪問不同網(wǎng)絡(luò)中的容器。
二、案例實(shí)驗(yàn):
1、用戶自定義的網(wǎng)絡(luò):
首先創(chuàng)建兩個(gè)容器,命名為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)建一個(gè)獨(dú)立的容器網(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),此時(shí)cont2已經(jīng)有了172.25.0.0的網(wǎng)絡(luò)
3、啟動第三個(gè)容器:
[root@docker ~]# docker run --network=demo_net --ip=172.25.3.3 -itd --name=cont3 busybox
[root@docker ~]# docker network inspect demo_net
此時(shí),有三個(gè)容器,cont1和cont2可以ping通,cont2
和cont3可以ping通,而宿主機(jī)可以和三者任意ping通,詳情如下圖:
4、查看三個(gè)容器內(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ā)生三個(gè)容器cont1/2/3可以相互之間都能ping通,這時(shí)候,需要重啟容器(systemctl restart docker),再開啟測試!?。?/p>
到此這篇關(guān)于docker容器互聯(lián)的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)docker容器互聯(lián)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker的文件系統(tǒng)映射:主機(jī)與容器間目錄的雙向映射詳解
通過Docker的目錄映射功能,實(shí)現(xiàn)主機(jī)與容器間的數(shù)據(jù)共享與持久化存儲,使用-v或--mount參數(shù)在運(yùn)行時(shí)設(shè)置主機(jī)與容器目錄映射,或通過DockerCompose配置文件實(shí)現(xiàn)自動化,此功能提升數(shù)據(jù)管理靈活性和效率2024-11-11docker中容器的網(wǎng)絡(luò)配置常用命令詳解
這篇文章主要介紹了docker中容器的網(wǎng)絡(luò)配置常用命令詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10docker搭建Mycat實(shí)現(xiàn)讀寫分離的項(xiàng)目實(shí)踐
本文主要介紹了docker搭建Mycat實(shí)現(xiàn)讀寫分離的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Docker Compose引用環(huán)境變量的方法示例
在項(xiàng)目中,往往需要在 docker-compose.yml 文件中使用環(huán)境變量來控制不同的條件和使用場景。本文集中介紹 docker compose 引用環(huán)境變量的方式,感興趣的小伙伴們可以參考一下2018-12-12docker容器運(yùn)行后退出(怎么才能一直運(yùn)行)
這篇文章主要介紹了docker容器運(yùn)行后退出(怎么才能一直運(yùn)行),本文詳細(xì)的介紹了解決方法,非常具有實(shí)用價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01