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容器设置一个与桥接物理网络同地址段的[email protected]网关
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上。
8、进入容器查看ip
docker exec -it test /bin/bash
时间: 2024-11-07 11:45:42