有的系统网卡是eth0 有的是ens33 ,使用ifconfig即可查看
新建网卡,命名为br1
nmcli connection add type bridge con-name br1 ifname br1 autoconnect yes
# con-name 后接新建命名的网卡名
# ifname 后接新建网卡连接的网卡设备名,此例为自己连接自己,如果去掉系统将自动指定其他不存在的设备,但会给后期设置带来不必要的麻烦
# autoconnect 为是否开机自动连接
此时系统网卡目录里已经有了br1网卡的文件
ls /etc/sysconfig/network-scripts
查看连接也已经出现br1网卡
nmcli connection
将新建的br1桥接到系统原有网卡ens33
nmcli connection add type bridge-slave con-name br1-ens33 ifname ens33 master br1
此时系统网卡目录里已经有了br1网卡桥接ens33的文件
ls /etc/sysconfig/network-scripts
关闭原有网卡,重启NetworkManager
nmcli connection down ens33
systemctl restart NetworkMansger
如果 启动不了
解决:
1、可以尝试使用以下命令:
service network-manager restart
2、如果是 Kali Linux(Debian),则需要用以下命令:
service networking restart
3、如果是Centos 8,则需要用以下命令:
nmcli c reload
查看IP地址
此时可以连接外部网络
创建不设定网络的Docker容器
docker run -itd --net=none --name=test centos /bin/sh
# -it 表示交互式启动容器,-itd 表示后台交互式启动容器,不可去掉it,否则将无法启动和进入容器
# --net 表示创建容器网络模式,包含:bridge host container none
bridge 默认,桥接到docker0网络
host 直接使用宿主机IP
container 与已存在的容器共享同一IP,但二者不在同一网络
none 不会创建网络,可使用pipework工具手工配置
# --name 表示创建容器的名字
# 后面的centos为笔者使用的镜像名
# /bin/sh 为指定以shell运行
准备pipework工具
下载pipework工具
git clone https://github.com/jpetazzo/pipework
设置pipework
cp pipework/pipework /usr/local/bin/pipework #pipework为可执行文件
使用pipework工具为新建的容器配置应用br1的桥接网络
pipework br1 test 192.168.0.233/[email protected]
# br1 为容器桥接的网卡
# test 为容器名称
# @ 以前为给容器设定的IP及掩码,以后为给容器设定的网关,这里即br1的IP,也可以直接将路由器网关作为容器网关
进入容器测试
docker exec -it test /bin/sh
(这里所测试的IP是百度的IP)
笔者所使用的镜像无法进行域名解析,需要自己配置