一、配置桥接网络
 
需求:为了使本地网络中的机器和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-网络管理-桥接网络的更多相关文章

  1. docker 配置桥接网络

    2.5 docker配置桥接网络(上): 为了使本地网络中的机器和Docker 容器更方便的通信,我们经常会有将Docker容器 配置到和主机同一网段的需求. 这个需求其实很容器实现, 我们只需要将D ...

  2. docker配置桥接网络

    [root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-et ...

  3. Docker默认桥接网络是如何工作的

    1. 启动一个Docker容器 一般来说,我们起一个容器比如一个简单的nginx服务会向这样 docker run -d --rm nginx:XXX OK容器起来了,但是并不能通过宿主机被外面的机器 ...

  4. Docker网络管理机制实例解析+创建自己Docker网络

    实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开发的容器添加至自己新建的网络,提高Doc ...

  5. Docker Centos7 下建立 Docker 桥接网络

    为什么要让docker桥接物理网络? docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是连接到docker0网卡上的.而docker0的ip段为172.1 ...

  6. 使用Docker的macvlan为容器提供桥接网络及跨主机通讯

    对于了解Docker容器网络的朋友,我想对虚拟机的网络也不会陌生,毕竟我们是跟随这个时代一起学习和进步的人.相比VM,Docker的网络也在逐步走向成熟,本文主要针对其中的macvlan做下简单的介绍 ...

  7. Centos7.x Docker桥接网络

    基于Centos7.x构建Docker桥接网络, 配置bridge桥接网络可以直接设置网卡配置文件: 自定义桥接网络设置如下: 关掉docker0 ifconfig docker0 down 删除do ...

  8. docker从零开始网络(二)桥接网络

    使用桥接网络 在网络方面,桥接网络是链路层设备,它在网络段之间转发流量.桥接网络可以是硬件设备或在主机内核中运行的软件设备. 就Docker而言,桥接网络使用软件桥接器,该软件桥接器允许连接到同一桥接 ...

  9. 使用pipework将Docker容器桥接到本地网络环境中

    在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主机的网卡桥接起来,再给Docker容器配上IP就可以了.pipew ...

  10. 安装docker后,导致qemu的桥接网络出现问题

    按照Qemu-4.1 桥接网络设置中介绍的方法建立起桥接网络后,可以实现虚拟机和host的相互ping,但是在虚拟机里去ping其他跟host处于同一个网段的ip地址时却失败了,然后ifconfig后 ...

随机推荐

  1. 微擎使用post提交,并显示弹出层

    微擎使用post提交,并显示弹出层 function changeStatus(id, status) { // 提交数据 var id = parseInt(id); var status = pa ...

  2. nyoj 21-三个水杯(BFS)

    21-三个水杯 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:7 submit:18 题目描述: 给出三个水杯,大小不一,并且只有最大的水杯的水是装 ...

  3. 力扣(LeetCode)4的幂 个人题解

    给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶:你能不使用循环或者递归 ...

  4. Apache服务安装及一些基本操作

    注意:安装apache服务之前记得搭建yum仓库 1.安装apache服务,输入命令“yum install httpd” 安装成功后,会这样显示 2.需要对Apache服务进行启动,输入命令“sys ...

  5. Redis入门,对Redis的理解和基本环境搭建及操作

    Redis入门使用 参考:https://blog.csdn.net/hellozpc/article/details/81267030 一).缓存的用途举例 1.前端页面广告的数据无需每次查询后台系 ...

  6. OAuth 2.0 概念及授权流程梳理

    本文可以转载,但请注明出处https://www.cnblogs.com/hellxz/p/oauth2_process.html OAuth2 的概念 OAuth是一个关于授权的开放网络标准,OAu ...

  7. Linux中shell基础、重定向、管道符、环境变量

    1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的 ...

  8. 实战webpack系列01

    01. 采坑webpack 一.webpack初章 // 一个常见的`webpack`配置文件 const webpack = require('webpack'); const HtmlWebpac ...

  9. 使用最新AndroidStudio编写Android编程权威指南(第3版)中的代码会遇到的一些问题

    Android编程权威指南(第3版)这本书是基于Android7.0的,到如今已经过于古老,最新的Android版本已经到10,而这本书的第四版目前还没有正式发售,在最近阅读这本书时,我发现这本书的部 ...

  10. 版本控制神器——git的基本使用

    git基础命令 安装git windows的话,直接下载安装即可 Linux Ubuntu安装,apt-get install git Linux Centos安装,yum install git 配 ...