溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker link如何實現容器互聯

發(fā)布時間:2021-12-29 12:42:22 來源:億速云 閱讀:206 作者:小新 欄目:開發(fā)技術

小編給大家分享一下Docker link如何實現容器互聯,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.1、容器間通過IP進行網絡訪問

新建兩個容器tomcat01和tomcat02

docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat

Docker link如何實現容器互聯

使用 ifconfig 命令查看toncat01的網卡信息:

Docker link如何實現容器互聯

可以看到,tomcat01的IP地址為 172.17.0.2

再查看toncat02的網卡信息:

Docker link如何實現容器互聯

可以看到,tomcat02的IP地址為 172.17.03

測試容器tomcat01和tomcat02是否能ping通:

tomcat01 ping tomcat02:

Docker link如何實現容器互聯

tomcat02 ping tomcat01:

Docker link如何實現容器互聯

根據上面兩張圖所示,不管是tomcat01 ping tomcat02還是tomcat02 ping tomcat01都是可以ping通的。

注:如果容器內沒有ifconfig命令和ping命令,依次執(zhí)行以下命令:

apt-get update
apt install iputils-ping
apt install net-tools

1.2、容器間通過容器名或容器id進行網絡訪問

容器間如果想通過容器名進行網絡連接,需要使用 docker run --link 來鏈接兩個容器。

–link可以用來鏈接2個容器,使得源容器(被鏈接的容器)和接收容器(主動去鏈接的容器)之間可以互相通信,并且接收容器可以獲取源容器的一些數據,如源容器的環(huán)境變量。

–link 的格式

--link <name or id>:alias

–link 添加到另一個容器的鏈接

name和id是源容器的name和id,alias是源容器在link下的別名。

–link 的使用實例

創(chuàng)建容器tomcat03,讓tomcat03作為接收容器(主動去鏈接的容器),上面的tomcat01(別名t1)作為源容器(被鏈接的容器),兩個容器進行鏈接:

docker run -d -P --name tomcat03 --link tomcat01:t1 tomcat

tomcat01 是上面啟動的 7b94f50c43ea 容器的名字,這里作為源容器,t1 是該容器在link下的別名(alias),通俗易懂的講,站在tomcat03容器的角度,tomcat01 和 t1 都是 7b94f50c43ea 容器的名字,并且作為容器的hostname,tomcat03 用這2個名字中的哪一個都可以訪問到 7b94f50c43ea 容器并與之通信(docker通過DNS自動解析)。

進行鏈接測試:tomcat03 ping tomcat01

ping tomcat01

Docker link如何實現容器互聯

ping t1

Docker link如何實現容器互聯

兩個都能ping通,可見,tomcat01 和 t1 都指向172.17.0.2。

但上面這種鏈接只是單向的,就是只能接收容器鏈接源容器,源容器不能鏈接到接收容器,也就是 tomcat03 鏈接上了 tomcat01,tomcat03能ping通tomcat01,tomcat01并沒有鏈接上tomcat03,tomcat01ping不同tomcat03。但是不影響tomcat01 通過IP ping tomcat03 或者tomcat03 ping tomcat01。

–link 原理

查看 tomcat03 的 hosts 文件,操作系統(tǒng)規(guī)定,在進行DNS請求以前,先檢查系自己的hosts文件中是否有這個域名和IP的映射關系。如果有,則直接訪問這個IP地址指定的網絡位置,如果沒有,再向已知的DNS服務器提出域名解析請求。

docker exec -it tomcat03 cat /etc/hosts

Docker link如何實現容器互聯

在tomcat03的hosts配置文件中,可以看到映射了tomcat01的IP、容器名、別名和容器id,所有tomcat03可以通過指定的容器名和tomcat01進行通信。

–link 就是在接收容器(這里是名為tomcat003的容器)添加了一條關于tomcat01容器的名稱解析。有了這個名稱解析后就可以不使用ip來和源容器通信了,除此之外當源容器重啟,docker會負責更新/etc/hosts文件,因此可以不用擔心容器重啟后IP地址發(fā)生了改變,解析無法生效的問題。

以上是“Docker link如何實現容器互聯”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI