1 Docker 網路模式
| 網路模式 | 配置 | 說明 |
|---|---|---|
| bridge模式 | –net=bridge | 默認值,在Docker網橋docker0上為容器創建新的網路堆疊 |
| none模式 | –net=none | 不配置網路,用戶可以稍后進入容器,自行配置 |
| container模式 | –net=container:name/id | 容器和另外一個容器共享Network namespace, |
| host模式 | –net=host | 容器和宿主機共享Network namespace |
| 用戶自定義 | –net=mynet | 用戶自己使用network相關命令定義網路 |
2 橋接原理概述
Docker使用Linux橋接,在宿主機虛擬一個Docker容器網橋(docker0),Docker啟動一個容器時會根據,Docker網橋的網段分配給容器一個IP地址,稱為Container-IP,同時Docker網橋是每個容器的默認網關,因為在同一宿主機內的容器都接入同一個網橋,這樣容器之間就能夠通過容器的Container-IP直接通信,

Docker容器網路就很好的利用了Linux虛擬網路技術,在本地主機和容器內分別創建一個虛擬介面,并讓他們彼此聯通(這樣一對介面叫veth pair),
Docker中的網路介面默認都是虛擬的介面,虛擬介面的優勢就是轉發效率極高(因為Linux是在內核中進行資料的復制來實作虛擬介面之間的資料轉發,無需通過外部的網路設備交換),對于本地系統和容器系統來說,虛擬介面跟一個正常的以太網卡相比并沒有區別,只是他的速度快很多,
3 Demo
3.1 命令 ip addr
#命令 ip addr
lo: 使用與本地互動,
ens33: 虛擬機當前IP,
docker0: docker虛擬IP地址,


3.2 啟動兩個容器
#啟動兩個
docker run -it alpine
190:172.17.0.2 :

192:172.17.0.3 :

#命令
ip addr
概述: 多了一對
191 veth980971c@if190
193 veth32b3b0a@if192


3.3 容器內是是否互通
3.3.1 ping ip
ping ip,可以,把docker0當作網關,docker0網關能處理就直接轉發,
如果docker0 網關處理不了,則交給ens33處理,
容器內相互ping ip:


容器內ping baidu:
3.3.2 ping 容器名稱
ping 容器名稱暫時不能ping通,

3.4 外部是怎么訪問容器內部的?
#命令,創建tomcat
docker run -P -d --name tomcat tomcat:jre8-alpine


#命令 查看iptabls 轉發規則
iptables -nL

查看tomcat ip:


3.5 自定義模式 實作ping 容器名稱
創建network:
#創建 -d 模式,--subnet ip段,--gateway 網關
docker network create -d bridge --subnet=192.168.0.0/16 --gateway=192.168.0.1 rosh_network

創建容器:
#創建容器
docker run -it --network rosh_network --name alpine1 alpine
docker run -it --network rosh_network --name alpine2 alpine
查看ip:


ping:


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398557.html
標籤:其他
下一篇:行程基本概念
