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ù)容器如果使用上下文中的暴露端口或者映射端口來通信,勢必會(huì)把數(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ū)動(dòng)(橋接模式),其他可選的值還有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地址使自動(dòng)分配的。
[root@huyang1 ~]# docker exec -it 9a /bin/sh / # ifconfig
對比發(fā)現(xiàn),此時(shí)cont2已經(jīng)有了172.25.0.0的網(wǎng)絡(luò)

3、啟動(dòng)第三個(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如何使用nginx搭建tomcat集群(圖文詳解)
這篇文章主要介紹了Docker使用nginx搭建tomcat集群的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
Docker安裝OpenWrt的實(shí)現(xiàn)步驟
OpenWrt是一種可以運(yùn)行在路由器上的嵌入式操作系統(tǒng),提供了許多網(wǎng)絡(luò)服務(wù)和功能,本文主要介紹了Docker安裝OpenWrt的實(shí)現(xiàn)步驟,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
部署Prometheus+Grafana監(jiān)控平臺實(shí)踐
文章介紹了如何在宿主機(jī)上配置Prometheus和Grafana,并使用NodeExporter監(jiān)控Linux服務(wù)器,通過Docker部署Prometheus和Grafana,并在Prometheus中添加NodeExporter作為數(shù)據(jù)源,最后,通過Grafana導(dǎo)入儀表盤來可視化監(jiān)控?cái)?shù)據(jù)2026-01-01
利用Docker分層構(gòu)建優(yōu)化鏡像大小的實(shí)現(xiàn)
合適docker鏡像文件大小不僅影響容器啟動(dòng)效率,也影響資源占用效率,本文介紹如何利用分層方式構(gòu)建docker鏡像,采用多種方式避免鏡像文件太大而影響性能,需要的朋友可以參考下2025-01-01
Docker拉鏡像報(bào)錯(cuò)error pulling image configuration:
這篇文章主要介紹了Docker拉鏡像報(bào)錯(cuò)error pulling image configuration: unknown blob的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
supervisor下的Dockerfile的多服務(wù)鏡像封裝操作
這篇文章主要介紹了supervisor下的Dockerfile的多服務(wù)鏡像封裝操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

