天天看點

docker筆記:docker容器通信參數 --link參數介紹

docker筆記:docker容器通信參數 --link參數介紹

1、link 參數作用

同一個宿主主機上的多個docker容器之間如果需要進行通信,第一種最容易想到的方式就是使用容器自身的ip位址、宿主主機的ip+容器暴露出的端口号來通信,我們知道預設情況下docker重新run後,對應的IP位址就會改變,這樣如果兩個容器之間通信就會變得非常麻煩,每次都要修改通信的IP位址。這個時候 --link參數就派上大用場了,它會給要連結的容器設定一個通信的别名,即使重新開機後IP位址發生了改變,依然可以正常通信。

2、指令格式

docker run -d --name myname--link toname:alisname -p 本地端口:容器端口 鏡像名稱      

參數說明:

\-- name:新容器名詞

\-- link:目标容器名稱:别名

\-p: 本地端口:容器端口

3、link原理

\--link的原理就是在/etc/hosts裡面添加了一個alias的名稱

4、測試案例

首先啟動一個tomcat01的容器

docker run -itd --name tomcat01 -p 8100:8080 tomcat:8.5.38      

docker ps 擷取容器的id d92f947ea54f

docker筆記:docker容器通信參數 --link參數介紹

擷取單個容器 ip

docker inspect -f '{
       
         
         {range .NetworkSettings.Networks}}{
       
         
         {.IPAddress}}{
       
         
         {end}}' d92f947ea54f      
docker筆記:docker容器通信參數 --link參數介紹
docker run -itd --name nginx01 --link tomcat01 nginx      
docker exec -it nginx01 /bin/bash #進入容器内部
apt update && apt install -y iproute2 # 安裝ping指令
cat /etc/hosts #檢視配置檔案
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.4      tomcat01 d92f947ea54f
172.17.0.6      70aa4c7dde72      
docker exec -it nginx01 ping tomcat01 
PING tomcat01 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.102 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.093 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.073 ms      

5、link參數注意事項

  • 使用link參數建立的容器所連結的主機需要處于運作狀态
  • 所連結的容器也必須是運作狀态
  • 使用link選項連結的主機ip不需要固定,因為每次建立容器都會檢查所連結容器的ip,并在/etc/hosts裡生成新的alias 名稱對應的ip

繼續閱讀