一、配置桥接网络
需求:为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求。这个需求其实很容易实现,我们只要将Docker容器和宿主机的网卡桥接起来,再给Docker容器配上IP就可以了。
思路:新添加一块宿主机br0网卡桥接本地ens33网卡,从git上clone 借助第四方 pipwork包为容器桥接宿主机br0网卡实现桥接通信!!
1:新增一块br0网卡,并配置br0网卡
[root@host1 ~]# cd /etc/sysconfig/network-scripts/
[root@host1 network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@host1 network-scripts]# vim ifcfg-br0
TYPE=Bridge ##这里原来Ethernet更改为Bridge 桥接模式
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0 ##网卡名称原ens33更改为br0网卡
UUID=18f02dd3-f445-432f-b0a6-a1fb9ec0f2c4
DEVICE=br0 ##这里原来ens33更改为br0
ONBOOT=yes
2:修改ens33网卡配置,UUID需注释,增加BRIDGE=br0p配置完成后
[root@host1 network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
#UUID=18f02dd3-f445-432f-b0a6-a1fb9ec0f2c4 ##UUID这块需要注释!!
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0 ##设置桥接网卡=br0
3:重启网络服务后,ifconfig查看br0网卡信息,此时ens33网卡则没有分配ip表示成功
[root@host1 network-scripts]# systemctl restart network
[root@host1 network-scripts]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.8.101 netmask 255.255.255.0 broadcast 192.168.8.255
inet6 fe80::b16c:64c5:9a66:cd16 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:82:89:9b txqueuelen 1000 (Ethernet)
RX packets 9142 bytes 15237405 (14.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7117 bytes 606732 (592.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:5fff:fe5f:1754 prefixlen 64 scopeid 0x20<link>
ether 02:42:5f:5f:17:54 txqueuelen 0 (Ethernet)
RX packets 5294 bytes 290388 (283.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5607 bytes 14823433 (14.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:82:89:9b txqueuelen 1000 (Ethernet)
RX packets 26743 bytes 31301657 (29.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14144 bytes 1196801 (1.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
4:下载pipwork,并存放到/usr/local/bin目录下
[root@host1 ]# git clone https://github.com/jpetazzo/pipework
正克隆到 'pipework'...
remote: Enumerating objects: 501, done.
remote: Total 501 (delta 0), reused 0 (delta 0), pack-reused 501
接收对象中: 100% (501/501), 172.97 KiB | 2.00 KiB/s, done.
处理 delta 中: 100% (264/264), done.
[root@host1 pipework]# cp pipework /usr/local/bin/
5:新建一个test_br0容器,并使用--net=none指定不分配该容器网络功能
[root@host1 ~]# docker run -itd --net=none --name test_bro centos
44cf598093748b88a7e56f30f7ac06abbb42f0fd5a25508001755648853a79d3
6:使用pipework为新开启的test_br0容器桥接宿主机的Br0网卡,并指定Ip为192.168.8.166
语法:pipework 【网卡】 【容器name】 【IP网段】@【网关IP】
[root@host1 ~]# pipework br0 test_br0 192.168.8.166/24@192.168.8.1
7:进入容器查询Ip是否配置成功
[root@host1 ~]# docker exec -it 44cf59 bash
[root@44cf59809374 /]# ifconfig
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.8.166 netmask 255.255.255.0 broadcast 192.168.8.255
ether 46:d7:5c:23:14:d3 txqueuelen 1000 (Ethernet)
RX packets 6482 bytes 15195529 (14.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6181 bytes 435596 (425.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
8:测试宿主和容器是否可通信,同时是否能连接外网
[root@host1 ~]# ping 192.168.8.166
PING 192.168.8.166 (192.168.8.166) 56(84) bytes of data.
64 bytes from 192.168.8.166: icmp_seq=1 ttl=64 time=0.307 ms
64 bytes from 192.168.8.166: icmp_seq=2 ttl=64 time=0.126 ms
64 bytes from 192.168.8.166: icmp_seq=3 ttl=64 time=0.065 ms
[root@44cf59809374 /]# ping www.baidu.com
PING www.baidu.com (180.101.49.11) 56(84) bytes of data.
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=49 time=62.9 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=2 ttl=49 time=58.5 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=3 ttl=49 time=58.5 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=4 ttl=49 time=57.6 ms
- docker 配置桥接网络
2.5 docker配置桥接网络(上): 为了使本地网络中的机器和Docker 容器更方便的通信,我们经常会有将Docker容器 配置到和主机同一网段的需求. 这个需求其实很容器实现, 我们只需要将D ...
- docker配置桥接网络
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-et ...
- Docker默认桥接网络是如何工作的
1. 启动一个Docker容器 一般来说,我们起一个容器比如一个简单的nginx服务会向这样 docker run -d --rm nginx:XXX OK容器起来了,但是并不能通过宿主机被外面的机器 ...
- Docker网络管理机制实例解析+创建自己Docker网络
实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开发的容器添加至自己新建的网络,提高Doc ...
- Docker Centos7 下建立 Docker 桥接网络
为什么要让docker桥接物理网络? docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是连接到docker0网卡上的.而docker0的ip段为172.1 ...
- 使用Docker的macvlan为容器提供桥接网络及跨主机通讯
对于了解Docker容器网络的朋友,我想对虚拟机的网络也不会陌生,毕竟我们是跟随这个时代一起学习和进步的人.相比VM,Docker的网络也在逐步走向成熟,本文主要针对其中的macvlan做下简单的介绍 ...
- Centos7.x Docker桥接网络
基于Centos7.x构建Docker桥接网络, 配置bridge桥接网络可以直接设置网卡配置文件: 自定义桥接网络设置如下: 关掉docker0 ifconfig docker0 down 删除do ...
- docker从零开始网络(二)桥接网络
使用桥接网络 在网络方面,桥接网络是链路层设备,它在网络段之间转发流量.桥接网络可以是硬件设备或在主机内核中运行的软件设备. 就Docker而言,桥接网络使用软件桥接器,该软件桥接器允许连接到同一桥接 ...
- 使用pipework将Docker容器桥接到本地网络环境中
在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主机的网卡桥接起来,再给Docker容器配上IP就可以了.pipew ...
- 安装docker后,导致qemu的桥接网络出现问题
按照Qemu-4.1 桥接网络设置中介绍的方法建立起桥接网络后,可以实现虚拟机和host的相互ping,但是在虚拟机里去ping其他跟host处于同一个网段的ip地址时却失败了,然后ifconfig后 ...
随机推荐
- 领扣(LeetCode)对称二叉树 个人题解
给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,nul ...
- IBM-X3850-4U诊断面板信息
IBM X3850 4U 指示灯 描述 OVERSPEC 没有足够的电量为系统供电.NONRED和LOG指示灯可能也点亮 PS 一个电源故障或者被电源未插 LINK 保留 CPU CPU出现故障.丢失 ...
- 学习记录:《C++设计模式——李建忠主讲》3.“组件协作”模式
“组件协作”模式:现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式.典型模式:Template M ...
- iOS核心动画高级技巧 - 3
7. 隐式动画 隐式动画 按照我的意思去做,而不是我说的. -- 埃德娜,辛普森 我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情.但是动画是Core Animation ...
- goland学习-go常用命令使用
goland学习-go常用命令使用 1.跨平台编译:env GOOS=linux GOARCH=amd64 go build 2.获取go第三方包:go get -u github.com/go-sq ...
- Java——内部类详解
说起内部类,大家肯定感觉熟悉又陌生,因为一定在很多框架源码中有看到别人使用过,但又感觉自己使用的比较少,今天我就带你具体来看看内部类. 内部类基础 所谓内部类就是在类的内部继续定义其他内部结构类. 在 ...
- ubuntu 16.04 上使用pybind11进行C++和Python代码相互调用 | Interfacing C++ and Python with pybind11 on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/a41adc1/,欢迎阅读! Interfacing C++ and Python with pybind11 on ubuntu ...
- LeetCode Bash练习
195. Tenth Line #!/bin/bash i= cat file.txt | while read line do #echo $line ] then echo $line fi le ...
- Zxing QRCode
1.拉伸 2.只能扫描一次 3.空指针异常
- nvidia gtx1050在kali linux系统下安装显卡驱动,且可以使用x-setting切换显卡
转自:https://www.zzhsec.com/255.html 1.更换源[使用中科大或者官方源都可以] 下面使用中科大的源 root@Andy:/home/dnt# vi /etc/apt/s ...