docker-网络管理-桥接网络

一、配置桥接网络

需求:为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求。这个需求其实很容易实现,我们只要将Docker容器和宿主机的网卡桥接起来,再给Docker容器配上IP就可以了。

思路:新添加一块宿主机br0网卡桥接本地ens33网卡,从git上clone 借助第四方 pipwork包为容器桥接宿主机br0网卡实现桥接通信!!

1:新增一块br0网卡,并配置br0网卡

[[email protected] ~]# cd /etc/sysconfig/network-scripts/

[[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-br0

[[email protected] 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配置完成后

[[email protected] 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表示成功

[[email protected] network-scripts]# systemctl restart network

[[email protected] 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目录下

[[email protected] ]# 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.

[[email protected] pipework]# cp pipework /usr/local/bin/

5:新建一个test_br0容器,并使用--net=none指定不分配该容器网络功能

[[email protected] ~]# docker run -itd --net=none --name test_bro centos

44cf598093748b88a7e56f30f7ac06abbb42f0fd5a25508001755648853a79d3

6:使用pipework为新开启的test_br0容器桥接宿主机的Br0网卡,并指定Ip为192.168.8.166

语法:pipework 【网卡】 【容器name】 【IP网段】@【网关IP】

[[email protected] ~]# pipework br0 test_br0 192.168.8.166/[email protected]

7:进入容器查询Ip是否配置成功

[[email protected] ~]# docker exec -it 44cf59 bash

[[email protected] /]# 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:测试宿主和容器是否可通信,同时是否能连接外网

[[email protected] ~]# 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

[[email protected] /]# 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

原文地址:https://www.cnblogs.com/douyi/p/11573773.html

时间: 2024-10-06 05:07:28

docker-网络管理-桥接网络的相关文章

docker配置桥接网络

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. Docker有4中网络模式,分别是bridge模式,host模式,container模式,none模式.其中bridge是默认的网络模式.此模式会为每一个docker容器分配一个Network Namespace,并将一个主机上的docker连接到一个虚拟网桥,一般是docker0.连在同一

Docker Centos7 下建立 Docker 桥接网络

为什么要让docker桥接物理网络? docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是连接到docker0网卡上的.而docker0的ip段为172.17.0.1,若想让容器与宿主机同一网段的其他机器访问,就必须在启动docker的时候将某个端口映射到宿主机的端口上才行,例如:docker run -itd -p 22 centos.这是我们所不能接受的,想想每个应用都要绞尽脑汁的去设置端口,因为不能重复,如果应用有多端口那更是不堪设想啊.所以为了

使用Docker的macvlan为容器提供的桥接网络

对于了解Docker容器网络的朋友,我想对虚拟机的网络也不会陌生,毕竟我们是跟随这个时代一起学习和进步的人.相比VM,Docker的网络也在逐步走向成熟,本文主要针对其中的macvlan做下简单的介绍. Why macvlan? 首先我们去对比下VM和Docker中不同的网络,这样会比较清楚. VM Docker NAT bridge Bridged macvlan, overlay等 Host-only bridge NAT VM中的NAT对应Docker中的bridge,虽然叫bridge,

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

在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主机的网卡桥接起来,再给Docker容器配上IP就可以了.pipework工具来实现这一需求 1.安装pipework 2.宿主机配置桥接网络(可以省略) 3.给容器添加桥接地址 实验环境: 宿主机:10.207.0.99/24 网关:10.207.0.0.1 容器test:10.207.0.236/24 1.安装pipework [[email protected

docker桥接网络原理图分享和pipework简单配置

1.docker其中一种桥接网络原理图 2.使用pipework第三方开源网络配置工具配置docker容器网络和host主机网络在同一个网段 #1) .安装pipework开源网络配置工具 git clone https://github.com/jpetazzo/pipework cp ~/pipework/pipework /usr/local/bin/ #第2步和第3步和第4步放入脚本一起执行,否则会出现断网连不上的现象 #2) .绑定虚拟网桥和物理网卡,实现物理网卡和虚拟网卡公用ip b

docker数据卷备份恢复以及配置桥接网络

笔记内容:docker数据卷备份恢复以及网络相关笔记日期:2018-02-06 25.9 数据卷备份恢复 25.10 docker网络模式 25.11 opration not permitted错误 25.12 配置桥接网络 25.9 数据卷备份恢复 备份: 如果数据卷容器的共享目录已经挂载到了本地宿主机的磁盘上,那么就无需进行数据卷备份.没有进行挂载到本地,而是作为共享目录的数据卷容器,就得定期将数据卷进行一个备份,不然如果数据卷被删除的话,数据也会丢失. 假设数据卷容器共享的目录是data

Docker数据卷备份恢复、桥接网络设置

1.数据卷备份恢复 备份 mkdir /data/backup docker run --volumes-from testvol -v  /data/backup/:/backup centos tar cvf  /backup/data.tar /data/ 说明:首先我们需要使用testvol数据卷新开一个容器,同时我们还需要把本地的/vol_data_backup/目录挂载到该容器的/backup下, 这样在容器中/backup目录里面新建的文件,我们就可以直接在/data/backup

docker(五)配置桥接网络

配置桥接网络 复制网卡配置文件ifcfg-ens33为ifcfg-br0,修改ifcfg-br0 [[email protected] ~]# cd /etc/sysconfig/network-scripts/ [[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-br0 [[email protected] network-scripts]# vim ifcfg-br0 //修改TYPE,NAME,DEVICE 修改网卡配置文件

Centos7.x Docker桥接网络

基于Centos7.x构建Docker桥接网络, 配置bridge桥接网络可以直接设置网卡配置文件: 自定义桥接网络设置如下: 关掉docker0 ifconfig docker0 down 删除docker brctl delbr docker0 增加网桥br0 yum install bridge-utils brctl show #查看物理机上有哪些网桥 brctl addbr docker_new0 #自定义网桥 /etc/sysconfig/network-scripts/下,修改if

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

按照Qemu-4.1 桥接网络设置中介绍的方法建立起桥接网络后,可以实现虚拟机和host的相互ping,但是在虚拟机里去ping其他跟host处于同一个网段的ip地址时却失败了,然后ifconfig后发现有一个叫做docker0的网桥,这是安装docker-ce时自动创建的,将docker0删除仍然无法ping通,索性将docker-ce卸载,然后重启电脑,这样虚拟机就可以ping通其他ip地址,配置上DNS和Gateway后,也可以ping通www.baidu.com. google了半天,发