1. 程式人生 > 實用技巧 >.Net Core3.0 WebApi 專案框架搭建 十五:基於AOP的切面redis快取

.Net Core3.0 WebApi 專案框架搭建 十五:基於AOP的切面redis快取

Docker 網路

docker網路

我們來探討一個dockernetwork的問題。小夥伴們請看如下命令:

docker run -d -p8080:8080 映象ID

-p8080:8080這個命令的意思就是將容器的8080埠對映到宿主機的8080埠,這個是我們手動指定的網路埠對映

場景

假如目前我們有很多的容器例項,微服務群,各個服務之間都有相互呼叫、訪問,實現容器互聯。那麼我們需要做什麼?

新建docker網路

我們需要建立一個網路環境,讓需要相互訪問的服務容器例項都加入到這個網路環境中,這樣就可以實現,相互訪問呼叫。

執行如下命令(建立一個docker網路環境):

# 建立docker網路,網路模式設定為bridge 網路名稱為my-network
docker network create -d bridge my-network

docker網路模式說明:

none模式:docker容器擁有自己的network namespace,但是不建立任何網路裝置,僅有lo網路,即為封閉式容器。使用--network none指定

bridge模式:docker安裝後會預設啟用的網路,並建立docker0網橋作為閘道器,使用此網路建立的容器會生成一對以veth開頭的虛擬網絡卡,一半在容器中,一半在docker0橋上,此方式實現了容器與宿主機間的通訊。docker0橋是NAT橋,因此容器獲得的是私有網路地址,可將容器想象為主機NAT服務背後的主機,如果開發容器或其上的服務為外部網路訪問,需要在宿主機上為其定義DNAT規則.使用--network bridge指定

host模式:共享宿主機的網路名稱空間,容器不會虛擬自己的網絡卡裝置及ip地址,而直接使用宿主機的ip地址與外部進行通訊,且不需要任何NAT轉換。使用--network host指定

檢視docker網路

可以看到,除了docker安裝時建立的三個網路,還有一個新的網路,就是我們剛那個建立的那個網路。

加入網路

我們來啟動倆個容器,並且,將倆個容器加入到my-network網路環境中。

# 啟動第一個容器
docker run -itd --name docker01 --network my-network springboot-docker/springboot-docker:1.0 /bin/bash 
# 啟動第二個容器
docker run -itd --name docker02 --network my-network springboot-docker/springboot-docker:1.0 /bin/bash 

下圖可知,執行docker ps,可以看到現在倆個容器已經執行起來了

驗證網路

我們分別進入到倆個容器中,ping對方,驗證是否網路暢通

# 進入到容器 docker01
docker exec -it docker01 /bin/bash

這樣就進入到了docker01容器中,執行命令ping docker02,可以看到網路是通的。

同理,進入到第二個容器中,用同樣的命令測試。在這裡有的小夥伴可能會遇到一個問題,在執行ping docker01的時候報錯,告訴你沒有這個命令,這時需要我們自己下載ping命令,執行如下倆條命令即可:

# 更新
apt-get update
# 安裝
apt install iputils-ping

小結

好了,小夥伴們,我們簡單的瞭解了docker的網路,現實的情況如果我們有成千上萬個容器需要相互連通,這樣的手動配置肯定是不行的,所以我們會用到docker-compose技術來進行服務的編配,後續,會和小夥伴們來討論docker-compose怎麼實現服務的編排。