Docker網路
- 一、前言
- 二、docker原生網路
- 一、 簡介
- 二、新建容器的網路設定
- 1、bridge模式
- 2、host模式
- 3、none模式
- 三、Docker自定義網路
- 一、新建默認自定義網路
- 二、新建自定義--subnet 、--gateway網橋
- 三、實作同一網橋的容器的互通
- 四、Docker容器通信
- 五、跨主機容器網路
- 一、macvlan網路方案實作
- 1.配置新網卡
- 2.啟用網卡,設定混雜模式,
- 3.docker主機上創建macvlan網路,開啟容器行程
- 4.另外一塊主機配置
- 5.實驗結果:在sserver2的容器中,ping通server1的容器行程
一、前言
1.docker的鏡像是令人稱道的地方,但網路功能還是相對薄弱的部分,
2.docker安裝后會自動創建3種網路:bridge、host、none
3.yum install -y net-tools 查看網路的工具
本章節將為4個部分去介紹docker網路通信
二、docker原生網路
一、 簡介
(1)docker安裝后會自動創建3種網路:bridge、host、none
安裝時會默認創建一個docker0 的Linux bridge,新建的容器會自動橋接到這個介面,
ip addr show docker0

(2) 查看當前網路
docker network ls

二、新建容器的網路設定
1、bridge模式
bridge模式下容器沒有一個公有ip,只有宿主機可以直接訪問,外部主機是不可見的,容器通過宿主機的NAT規則后可以訪問外網,

[root@server1 harbor] docker run -d nginx 后臺運行nginx
9fb9e4cdfe2ab9b7ae4a86b96108239ac60eef9f60eb0274f3c7b22f4b134e4c
[root@server1 harbor] brctl show 查看網路連接
發現使用的是默認的網橋

2、host模式
host模式可以讓容器共享宿主機網路堆疊,這樣的好處是外部主機與容器直接通信,但是容器的網路缺少隔離性,

host網路模式需要在容器創建時指定 --network=host
[root@server1 harbor] docker run -it --name demo --network host busybox
/ # ip addr show


3、none模式
none模式是指禁用網路功能,只有lo介面,在容器創建時使用
–network=none指定,
[root@server1 harbor]# docker run -it --name demo --network none busybox
/ # ip addr
只有lo口的

三、Docker自定義網路
自定義網路模式,docker提供了三種自定義網路驅動:
bridge、overlay、macvlan,
自定義bridge驅動類似默認的bridge網路模式,但增加了一些新的功能,overlay和macvlan是用于創建跨主機網路,
一、新建默認自定義網路
docker network create -d bridge my_net1
docker network ls 圖1
docker network inspect my_net1 圖2
圖1

圖2

二、新建自定義–subnet 、–gateway網橋
docker network create --subnet 172.42.0.0/24 --gateway 172.42.0.1 my_net2
docker network inspect my_net2
成功獲取到設定的網路

三、實作同一網橋的容器的互通
使用–ip引數可以指定容器ip地址,但必須是在自定義網橋上,默認的bridge模式不支持,同一網橋上的容器是可以互通的,
[root@server1 harbor] docker network create --subnet 172.42.0.0/24 --gateway 172.42.0.1 my_net2 建立自定義網路
[root@server1 harbor] docker run -it --name demo1 --network my_net2 --ip 172.42.0.10 busybox 設定此容器的ip(并且ctrl+p+q打入后臺運行)
[root@server1 harbor] docker run -it --name demo3 --network my_net2 --ip 172.42.0.12 busybox
/ ping 172.42.0.10 ping 之前demo1的ip

四、Docker容器通信
docker 1.10開始,內嵌了一個DNS server,
dns決議功能必須在自定義網路中使用,
啟動容器時使用 --name 引數指定容器名稱
五、跨主機容器網路
跨主機網路解決方案
docker原生的overlay和macvlan
一、macvlan網路方案實作
Linux kernel提供的一種網卡虛擬化技術,
無需Linux bridge,直接使用物理介面,性能極好,
1.配置新網卡
server1
添加虛擬網卡

修改新網卡配置
[root@server1 network-scripts] cd /etc/sysconfig/network-scripts
[root@server1 network-scripts] cp ifcfg-eth0 ifcfg-eth1
[root@server1 network-scripts] vim ifcfg-eth1 圖1
圖1

2.啟用網卡,設定混雜模式,
[root@server1 network-scripts] ifup eth1
[root@server1 network-scripts] ip link set eth1 promisc on
[root@server1 network-scripts] ip addr show eth1

3.docker主機上創建macvlan網路,開啟容器行程
[root@server1 network-scripts] docker network create -d macvlan --subnet 172.54.0.0/24 --gateway 172.54.0.1 -o parent=eth1 macvlan1
1a4404b1fd8a1586081fa14600e1f1e843872f20609800fd6482f8a28f5c604f
[root@server1 network-scripts] docker run -it --name demo2 --network macvlan1 --ip 172.44.0.11 busybox
/
4.另外一塊主機配置
server2
操作同上,添加一塊相同的網卡eth1,修改其內容如下

啟用網卡,設定混雜模式,
[root@server1 network-scripts] ifup eth1
[root@server1 network-scripts] ip link set eth1 promisc on
[root@server1 network-scripts] ip addr show eth1
創建相同網段的macvlan,設定ip為172.54.0.12的容器行程
[root@server2 mnt] docker network create -d macvlan --subnet 172.54.0.0/24 --gateway 172.54.0.1 -o parent=eth1 macvlan1
[root@server2 mnt] docker run -it --name demo3 --network macvlan1 --ip 172.54.0.12 busybox
5.實驗結果:在sserver2的容器中,ping通server1的容器行程

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289971.html
標籤:其他
上一篇:虛擬機螢屏顯示不全(界面大小更改 )虛擬機Ubuntu18.04 的超詳細環境搭建教程/步驟 SDN軟體定義網路實驗
