中級篇 容器之間的Link(27)

2021-09-11 14:44:39 字數 2743 閱讀 3674

上次介紹了預設的網路bridge,連線到docker0之後還可以跟外界進行通訊,檢視docker之間的關係link。上節生成了test1和test2,test1和test2之前可以通過ip位址的房還是進行通訊的。

場景
如果建立2個容器,乙個mysql容器,乙個tomcat容器,tomcat容器內後台應用,需要訪問mysql資料庫容器,按照上節的原理,我需要先進入mysql的容器中檢視mysql的ip位址,然後在在tomcat容器的應用中修改程式裡面的資料庫連線位址才可以完成應用的連線。這樣是不是很麻煩。 其實還有一種link的方式可以讓應用通訊變的簡單

sudo docker ps

複製**

sudo docker stop test2

sudo docker rm test2

sudo docker ps

複製**

image.png

sudo docker run -d --name test2 --link test1 busybox /bin/sh -c "while true; do sleep 3600; done"

sudo docker ps

sudo docker exec -it test2 /bin/sh

#ping test1

ping 172.17.0.2

ping test1

複製**

通過link test1 也就是直接把test1 告訴給test2的ip位址,直接可以通過test1的容器名字,直接找test1

sudo docker exec -it test1 /bin/sh

ping test2

複製**

上節課通過docker network ls 可以看到乙個bridge host none

我們自己建立乙個bridge,讓容器直接繫結新的bridge

sudo docker network create -d bridge mybridge 

sudo docker network ls

brctl show

複製**

image.png

#新建test3 連線新的mybridge

sudo docker run -d --name test3 --network mybridge busybox /bin/sh -c "while true; do sleep 3600; done"

#檢視新的mybridge上有新的介面了

brctl show

複製**

#檢視下新的mybridage它的網路

sudo docker network inspect mybridge

複製**

之前都是172.17 這裡的是172.18

問題來了,乙個17,乙個18網段如何讓17網段的容器 可以連線在新的18網段上呢

sudo docker network 

sudo docker network connect

複製**

#我們讓連線到mybridage這個network上

sudo docker network connect mybridge test2

sudo docker network inspect mybridge

複製**

image.png

我們在test3上嘗試ping下test2 看能否ping通

sudo docker exec -it test3 /bin/sh

#ping test2的ip位址

ping 172.18.0.3

#ping test2

ping test2

複製**

是不是有點神奇,按照常理我不通過link不可以通過名稱直接ping通test2,而這裡我們成功的ping通了test2,這是為什麼呢?我們test2和test3因為都連線了使用者自己建立的bridge上,這2個預設就是連線好的,可以直接通過名稱。咱們在試試通過test2來ping test3試試.

sudo docker exec -it test2 /bin/sh

ip a

ping test3

#ping test1,是可以ping通的 因為之前咱們已經link上去了,如果不link根本是ping不通的。如果ping不通 也可以通過 sudo docker network connect mybridge test1 的方式來ping

ping test1

複製**

ps:使用者自定義的bridge 和 docker0 這個bridge他們之前的區別,docker0 如果通過名稱想找到需要通過link,實際的專案中很少使用link,其實讓大家知道link這個命令。

中級篇 容器的操作(20)

上次的學習了docker的實戰,將dockerfile通過的build變成了dockerimage,然後通過run方法,image轉換成了container,這次主要講的是如何操作container。exec可以進入執行中的容器 docker run d zhugeaming flask hello...

中級篇 容器的技術概述(二)

容器的前世今生 物理資源的限定和排程,設定指定vm的記憶體,cpu,硬碟根據應用來進行控制,方便擴充套件,歡迎可以統一化,方便管理。可以使物理資源的最大化利用。每個虛擬機器就是乙個作業系統,每個作業系統都要分配對應的作業系統資源,大家都用window系統,真正的生產環境一般都是用linux作業系統其...

跟我學C 中級篇 STL的容器Array

stl中的array陣列型別是在c tr1中才提出的,在之前只有vector這個類似於陣列的型別。但在實際應用中發現,vector和實際應用陣列還是有非常大的區別,包括迭代器訪問的控制,記憶體大小的控制等。用過vector的很容易發現它和實際使用中的陣列的諸多不同之處。換句話說,實際開發過程中,還是...