Docker(六)--docker的網絡配置

一.docker網絡模式

1.docker有三種模式(bridge、host、none)
在這裏插入圖片描述

二.docker基本網絡配置

bridge:
docker安裝時會創建一個名爲 docker0 的Linux bridge,新建的容器會自動橋接到這個接口。
在這裏插入圖片描述
默認選擇的就是bridge
在這裏插入圖片描述
查看宿主機網橋

root@server2 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
docker0		8000.02421e6ebdb5	no		veth128d595

在這裏插入圖片描述
沒有brctl命令,可在真機查看
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在宿主機上查看docker容器網絡產生的進程
在這裏插入圖片描述host:
host模式可以讓容器共享宿主機網絡棧,這樣的好處是外部主機與容器直接通信,但是容器的網絡缺少隔離性。
在這裏插入圖片描述
1.創建以網絡類型爲host的vm2
在這裏插入圖片描述
none:
none模式是指禁用網絡功能,只有lo接口在這裏插入圖片描述

container:

在這裏插入圖片描述
1.使用container模式運行容器並且查看網絡
在這裏插入圖片描述2.運行新的容器與container的網絡模式下的數據庫進行連接
在這裏插入圖片描述

三.高級網絡配置

自定義網絡模式,docker提供了三種自定義網絡驅動:bridge、overlay、macvlan

1.創建自定義網橋
在這裏插入圖片描述
查看詳細信息
在這裏插入圖片描述

2.以自定義網橋運行容器
在這裏插入圖片描述3.以自定義網橋運行容器,並測試兩個容器能否ping通
在這裏插入圖片描述
docker之間的互連

指定網段和網關:–subnet 、–gateway

1.創建自定義網絡,指定網段及其網關
在這裏插入圖片描述
2.使用自定義網絡運行容器
在這裏插入圖片描述
使兩個不同網段的容器通信
在這裏插入圖片描述
外網訪問容器(通過端口影射)

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
外網訪問容器用到了docker-proxy和iptables DNAT
宿主機訪問本機容器使用的是iptables DNAT
外部主機訪問容器或容器之間的訪問是docker-proxy實現

使用macvlan解決docker跨主機網絡
1.爲server1、server2兩個虛擬機添加網卡,並打開混雜模式

[root@server1 ~]# ip addr show | grep eth
[root@server1 ~]# ip link set eth1 promisc on
[root@server1 ~]# ip addr show | grep eth1

在這裏插入圖片描述

[root@server2 ~]# ip addr show | grep eth
[root@server2 ~]# ip link set eth1 promisc on
[root@server2 ~]# ip addr show | grep eth1

在這裏插入圖片描述
注意:
1.因爲多個MAC地址的網絡數據包都是從同一塊網卡上傳輸,所以需要打開網卡的混雜模式
2.如果不開啓混雜模式,會導致macvlan網絡無法訪問外界,具體在不使用vlan時,表現爲無法ping通路由以及同一網絡內他其他主機

2.在兩個虛擬機創建以macvlan模式爲網絡的容器

server1:

[root@server1 ~]# docker network create -d macvlan --subnet 172.25.0.0/24 --gateway 172.25.0.1 -o parent=eth1 macvlan1
[root@server1 ~]# docker run -it --name vm1 --network=macvlan1 --ip=172.25.0.11 ubuntu
[root@server1 ~]# docker run -it --name vm2 --network=macvlan1 --ip=172.25.0.12 ubuntu

server2:

[root@server2 ~]# docker network create -d macvlan --subnet 172.25.0.0/24 --gateway 172.25.0.1 -o parent=eth1 macvlan1
[root@server2 ~]# docker run -it --name vm1 --network=macvlan1 --ip=172.25.0.10 ubuntu

此時發現server1內部兩個容器不能ping通,server1、2之間也不能ping通

原因:爲開啓eth1網卡

ip link set eth1 up

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章