centos7 docker宿主機配置橋接物理網絡終極實戰

centos7 docker宿主機配置橋接物理網絡終極實戰

1、停止docker daemon,並刪除docker0

systemctl stop docker.service

ip link set dev docker0 down
brctl delbr docker0


2、創建橋接物理網絡:

2.1、思路整理

(1)新建br0橋接網絡,brctl show可以查看(需安裝bridge-utils)

(2)將宿主機物理網卡IP、掩碼、網關、dns(或者dhcp)配置到br0上

(3)刪除宿主機物理網卡IP、掩碼、網關、dns(或者dhcp)配置

(4)將宿主機物理網卡加入到br0

2.2、配置實戰

思路可以有一個,但是方案必須要有多種,此處列舉兩個方案

2.2.1、更改網卡配置文件實現(推薦)

此方案見本人另外一篇博客:

http://zhaoyfcomeon.blog.51cto.com/8429349/1968869

2.2.2、bctrl and ip命令實現

brctl addbr br0
ip link set dev br0 up
ip addr add 192.168.184.100/24 dev br0 #爲br0分配物理網絡中的ip地址
ip addr del 192.168.184.99/24 dev ens0 #將宿主機網卡的IP清空
brctl addif br0 ens0 #將宿主機網卡掛到br0上
ip route del default #刪除原路由
ip route add default via 192.168.184.2 dev br0 #爲br0設置路由

3、設置docker服務啓動參數

這裏要注意的是,不同的linux操作系統docker的配置文件所在不同
centos 在/etc/sysconfig/docker
其他操作系統請前往下面的網址

https://docs.docker.com/installation/#installation
vim /etc/sysconfig/docker 
在OPTIONS='--selinux-enabled'這行中修改爲
OPTIONS='--selinux-enabled -b=br0'
即讓docker服務啓動時使用br0網卡進行橋接

4、啓動docker服務

systemctl start docker
systemctl status docker

5、安裝pipework

git clone https://github.com/jpetazzo/pipework
cp ~/pipework/pipework /usr/local/bin/

6、啓動一個none網絡驅動的容器

這裏最好不要讓docker自動獲取ip,下次啓動會有變化而且自動獲取的ip可能會和物理網段中的ip衝突

docker run -itd --net=none --name=test centos /bin/bash

7、爲test容器設置一個與橋接物理網絡同地址段的ip@網關

方法有兩種,思路和原理是一樣的

7.1、使用pipework工具,此工具是shell腳本

pipework br0 test 192.168.184.11/[email protected]

重點:pepework操作內容:

  • 查看主機中是否存在br0網橋、不存在就創建;

  • 向test中加入一塊名爲eth1的網卡,並配置IP地址爲192.168.184.11/24

  • 若test中已經有默認路由,則刪掉,把192.168.184.2設爲默認路由的網關;

  • 將test容器連接到之前創建的br0上。

7.2、使用ip命令

配置使ip命令可以控制c4容器的network namespace
docker inspect --format "{{ .State.Pid }}" c4
467
ln -s /proc/467/ns/net /var/run/netns/467
配置虛擬網卡對
ip link add veth-a type veth peer name veth-b
將veth-a添加到br0網橋中
brctl addif br0 veth-a
ip link set veth-a up
將veth-b添加到容器中
ip link set veth-b netns 467
更改veth-b在容器中的名字
ip netns exec 467 ip link set veth-b name eth0
ip netns exec 467 ip link set eth0 up
ip netns exec 467 ip addr add 9.115.211.30/24 dev eth0
ip netns exec 467 ip route add default via 9.115.211.1
容器的dns是同步的宿主機/etc/resolv.con的配置

8、進入容器查看ip

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