網路管理是docker中重要的部分,由於需要構建集群,容器之間需要進行通訊,尤其是跨主機之間的容器間進行通訊。
docker有三種網路型別,bridge、host和none。
檢視docker的網路幫助
# 檢視network命令幫助
$>docker network --help
執行結果如下:
usage: docker network command
manage networks
commands:
connect connect a container to a network
create create a network
disconnect disconnect a container from a network
inspect display detailed information on one or more networks
ls list networks
prune remove all unused networks
rm remove one or more networks
檢視網路列表
列表中driver是三種型別之一,name可以任意取。
$>docker network list
建立自己的網路,指定子網
$>docker network create --subnet 172.18.0.0/16 mynetwork
檢視建立的網路
$>docker network list
結果如下:
檢查指定網路
$>docker network inspect mynetwork
3.1 環境說明
本案例使用兩台虛擬機器,s101和s102,具體配置見**。
主機名稱
ip位址
閘道器s101
192.168.231.101
192.168.231.2
s102
192.168.231.102
192.168.231.2
3.2 目標
本案例要是實現兩台虛擬機器內的四個docker容器之間的網路訪問,具體網路拓撲如下:
主機docker容器1
docker容器2
s101(192.168.231.101)
192.168.231.10
192.168.231.11
s102(192.168.231.102)
192.168.231.20
192.168.231.21
3.3 操作
對兩台虛擬機器的乙太網卡均開啟為混雜模式
如果不開啟混雜模式,會導致macvlan無法訪問外網。使用命令如下:
# 設定乙太網卡開啟混雜模式
$>ip link set eth16777736 promisc on
檢視網絡卡狀態
$>ifconfig
在每台虛擬機器上執行如下命令,新增虛擬網絡卡
# s101執行 ,需要位於同一網段
$>docker network create -d macvlan --subnet=192.168.231.10/24 --gateway=192.168.231.2 -o parent=eno16777736 -o macvlan_mode=bridge eth0_1
# s102執行
$>docker network create -d macvlan --subnet=192.168.231.20/24 --gateway=192.168.231.2 -o parent=eno16777736 -o macvlan_mode=bridge eth0_1
分別在兩台虛擬機器上建立docker容器
測試容器之間是否能夠ping通
$>ping 192.168.231.11 # 10 ping 11
$>ping 192.168.231.20 # 10 ping 20
Docker 網路管理
容器建立時,會建立veth,與docker客戶端相連 新增虛擬網橋 sudo brctl addbr br0 sudo config br0 192.168.100.1 netmask 255.255.255.0 更改docker守護程序的啟動配置 etc default docker 中新增doc...
Docker 網路管理
實際開發中我們經常在部署應用時存在多個容器,那麼在單一主機中多個docker容器是如何通訊的假設現在有乙個應用需要部署,但是tomcat和mysql服務分開部署,這時候按照正常的思考就必須先部署mysql然後拿到mysql容器的ip之後才能部署tomcat容器 命令 檢視命令 docker netw...
docker 網路管理
docker 中的網路驅動模式 檢視網路 docker network ls 建立網路 docker network create 網路刪除 docker network rm 檢視網路詳細資訊 docker network inspect 使用網路 docker run network 網路連線與...