文档章节

Docker Centos7 下建立 Docker 桥接网络

刺猬一号
 刺猬一号
发布于 2017/06/13 14:05
字数 823
阅读 35
收藏 0

前言

  • 最近职业规划开始有了转变,在创业团队中一个人的角色不可能只有一个,说说我现在担任过的角色:配置管理,项目经理,售前技术支持,售后技术支持,测试,少许开发工作,产品策划;除了市场营销,其他杂七杂八的都干过了。最后我发现我最适合的职位也许是devops,这个岗位的工作内容请大家自行百度。
  • 回正题,去年开始关注docker,直到今年看了坛子里的大神们对docker调研实践后,我决定也开始实践。就从改造公司研发和运维环境开始,这次的帖子主要是将自己构建docker桥接物理网络的过程讲述一遍,本来网上是有很多帖子的,但坑不少,为了让想研究docker的同好少走弯路,这才总结了一下。

为什么要让docker桥接物理网络?

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

centos7宿主机上建立Docker桥接物理网络过程

宿主机网卡信息:
name:ens0
IP:192.168.184.99
GATEWAY:192.168.184.2
DNS:192.168.184.2

1. 停止docker服务

~#:service docker stop

2.删除docker0网卡

~#:ip link set dev docker0 down
~#:brctl delbr docker0

3.新建桥接物理网络虚拟网卡br0

~#: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设置路由

4.设置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网卡进行桥接

5.启动docker服务

~#:service docker start

6.安装pipework

~#:git clone https://github.com/jpetazzo/pipework
~#:cp ~/pipework/pipework /usr/local/bin/

7.启动一个手动设置网络的容器
这里最好不要让docker自动获取ip,下次启动会有变化而且自动获取的ip可能会和物理网段中的ip冲突

~#:docker run -itd --net=none --name=test centos7 /bin/bash

9.为test容器设置一个与桥接物理网络同地址段的ip@网关

~#:pipework br0 test 192.168.184.11/24@192.168.184.2

10.进入容器查看ip

~#:docker attach test

© 著作权归作者所有

共有 人打赏支持
刺猬一号
粉丝 11
博文 373
码字总数 616361
作品 0
深圳
私信 提问
docker+open vswitch多宿主间容器互连构建tomcat服务

1、本文介绍centos7下的docker容器互联及端口映射问题 环境介绍: docker1:192.168.1.230 docker2:192.168.1.231 a.两台宿主分别更改主机名docker1 and docker2 # hostnamectl set-hostname ...

Anonymous123
2016/04/22
0
0
docker网络管理与本地私有Registry创建部署

概述 上一篇博客大致描述了docker的原理与传统虚拟机的使用,以及docker基本使用,本文主要描述docker的网络管理及重点介绍docker本地(内部)registry仓库的搭建及私有registry,用来统一保存...

dyc2005
2018/06/29
0
0
全面理解Docker虚拟化的14个技巧

服务器虚拟化指的是在操作系统与硬件之间加一层,叫做hypervisor层,对下控制硬件,对上承载操作系统,操作系统os以文件形式封装运行,称为虚拟机,主要解决的问题是硬件利用率和灵活性的问题...

让往事随风
2016/04/18
252
0
centos7系统下 docker 环境搭建

运行环境: VMware Workstation Pro 在虚拟机中安装centos7系统, 选择最小安装, 网络连接方式选择的桥接(与宿主机在同一IP段) centos7一定要安装64位, docker目前不支持32位内核 ##看准了, 是...

qq_33326449
2018/03/20
0
0
VirtualBox 初次安装centos7 虚拟机的注意事项

最近一直在研究docker集群,正好看到swarm,于是打算使用virtualbox 构建一个本地的虚拟机集群来学习swarm的一些操作。由于之前在virtualbox上面只搭建了一台各个功能都完备的centos虚拟机,...

Allocator
2017/05/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式之数据库和缓存双写一致性方案解析

为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 ![] 但是在更新缓存方面,对于更新...

hensemlee
21分钟前
0
0
怎么学习大数据

最近有很多人在找,大数据是怎么学?需要学什么技术以及这些技术的学习顺序是什么?今天有时间我把个问题总结成文章分享给大家。 那大数据处理技术怎么学习呢?首先我们要学习Java语言和Lin...

董黎明
21分钟前
0
0
MySQL 常用数据存储引擎区别

mysql有多种存储引擎,目前常用的是 MyISAM 和 InnoDB 这两个引擎,除了这两个引擎以为还有许多其他引擎,有官方的,也有一些公司自己研发的。这篇文章主要简单概述一下常用常见的 MySQL 引擎...

吴伟祥
24分钟前
0
0
MySQL学习笔记之三排序和过滤

在数据库的使用中排序和过滤也是经常的操作 排序检索数据,关键字order ##1.按照某个列名排序 普通排序mysql> select * from user;+----+--------+-----+-----------------------+-----+|...

凌宇之蓝
28分钟前
0
0
编译GDAL2.3.0的C#接口

编译完GDAL和JAVA接口后,如果需要使用C#调用,就需要编译C#的接口。方法如下: 注意:使用的SWIG版本不能使用太高版本,否则,会报一堆的类型未找到的错误,我是无从下手。使用swig2.0.7(据...

会哭的鳄鱼
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部