pipework 工作原理分析 :

•1.首先pipework检查是否存在 br0网桥,若不存在,就自己创建。

•2.创建veth pair 设备,用于为容器提供网卡并连接到br0网桥。

•3.使用docker inspect找到容器在主机中的PID,然后通过 PID将容器的网络命名空间链接到/var/run/netns/目录下。这么做的目的是,方便在主机上使用 ip netns命令配置容器的网络。

因为,在Docker容器中,我们没有权限配置网络环境。

•将之前创建的veth pair 设备分别加入容器和网桥中。在容器中的名称默认为eth1,可以通过pipework的-i参数修改该名称。

•然后就是配置新网卡的 IP。若在 IP 地址的后面加上网关地址,那么 pipework 会重新配置默认路由。这样容器通往外网的流量会经由新配置的eth1出去,而不是通过eth0和docker0。

(若想完全抛弃自带的网络设置,在启动容器的时候可以指定--net=none)

以上就是 pipework 配置 Docker 网络的过程,这和 Docker 的 bridge 模式有着相似的步骤。

事实上,Docker在实现上也采用了相同的底层机制。

通过源代码,可以看出,pipework 通过封装Linux上的ip、brctl等命令,简化了在复杂场景

下对容器连接的操作命令,为我们配置复杂的网络拓扑提供了一个强有力的工具。当然,如

果想了解底层的操作,我们也可以直接使用这些 Linux命令来完成工作,甚至可以根据自己

的需求,添加额外的功能

pipework可以在下面用三个场景来使用和工作原理。

1  将Docker 容器配置到本地网络环境中

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

下面我们来操作一下:

1.安装pipework

wget https://github.com/jpetazzo/pipework.git

2. 启动Docker容器

3.-- 配置容器网络,并连到网桥 br0 上。网关在IP地址后面加@指定。

4. 将主机eno16777736网卡桥接到 br0上,并把eno16777736 的 IP配置在br0上。

注:如果是远程操作,中间网络会断掉,所以放在一条命令中执行。

5.测试

2  单主机Docker 容器 VLAN 划分

pipework 不仅可以使用 Linux bridge 连接 Docker 容器,还可以与 OpenVswitch 结合,实现Docker 容器的 VLAN 划分。

演示一下,在单机环境下,如何实现 Docker 容器间的二层隔离。

1.安装openvswitch

安装基础环境:yum install gcc make python-devel openssl-devel kernel-devel graphviz \ kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool

下载openvswitch的包:wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz

解压与打包

复制

修改

下载

查看一下

安装并启动

查看一下状态,有两个进程

之后安装pipework

创建交换机,把物理网卡加入ovs1

或者

创建4个docker容器

划分vlan并加入

加一条路由,就可以上网了

最后相同vlan之间可以互相通信,可以使用外网。

转载于:https://blog.51cto.com/13544810/2066096

docker pipework相关推荐

  1. Docker容器固定IP分配

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使 ...

  2. Docker 配置固定IP及桥接的实现方法(转载)

    这篇文章主要介绍了Docker 配置固定IP和桥接的实现方法的相关资料,这里详细介绍了Docker 的四种网络模式及如何实现桥接的案例,需要的朋友可以参考下 docker默认使用bridge模式,通过 ...

  3. Docker 原理、学习教程

    From:https://blog.csdn.net/dataiyangu/article/details/82260586 Docker 常用命令总结:https://blog.csdn.net/i ...

  4. 转,docker学习笔记

    一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...

  5. 非常详细的 Docker 学习笔记

    一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...

  6. 非常详细的Docker学习教程

    一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...

  7. Docker指定网桥和指定网桥IP

    $ docker network ls NETWORK ID NAME DRIVER 7fca4eb8c647 bridge bridge 9f904ee27bf5 none null cf03ee0 ...

  8. Docker基础(下)

    Docker基础(下) 链接:https://pan.baidu.com/s/1u8Tg5qB4ZZHEK6GqCJkjwg 提取码:u8hb 复制这段内容后打开百度网盘手机App,操作更方便哦 5. ...

  9. Docker学习教程(非常详细)

    转自:https://blog.csdn.net/zmx729618/article/details/72930474 一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器 ...

最新文章

  1. 多层陶瓷电容器用处_陶瓷电容的作用及特点
  2. 学习knex过程中好的参考资料整理
  3. LeetCode之无重复字符的最长子串
  4. Docker : Docker安装Kibana
  5. iOS label显示不同颜色的字体
  6. python-gui-pyqt5的使用方法-1
  7. matlab中构建Cuk变换器,CUK变换器的SIMULINK仿真与应用.pdf
  8. macbookpro升级后打不开eclipse_苹果更新MacBook Pro等蝶式键盘维修计划机型,包括最新2019款...
  9. (软考中级--信息安全工程师)三、密码学基本理论
  10. c语言 sd卡编程,嵌入式系统基础 嵌入式系统中的C语言编程基础 烧写Superboot到SD卡.docx...
  11. 在Power BI中如何计算同比增长?
  12. 山东大学项目实训设计系统(四)管理员端
  13. Android 实现拍照功能,并将图片保存到本地存储
  14. unity查询当前屏幕分辨率
  15. 康奈尔大学的计算机专业怎么样,美国名校康奈尔大学计算机专业介绍
  16. 用itunes把iphoto已导入到iphone的照片怎么删除?
  17. 计算机配置ppt制作,做ppt.ps要用什么样的配置的手提电脑做
  18. RxSwift--RxSwift简介
  19. 比最快的超级计算机快一百万亿倍!中国科学家实现“量子计算优越性”里程碑
  20. 电脑速度慢的一些方法

热门文章

  1. kotlin运行_Kotlin允许,运行,也适用于
  2. springboot之@Async实现异步
  3. 开课吧:C++语言基础以及应用领域有哪些?
  4. 开课吧课堂之throws如何去使用?
  5. MySQL数据库安装、初始化及修改密码
  6. OpenCV(二)OpenCV的介绍和发展
  7. 网络运维常见交换机故障
  8. react+百度地图实现自定义图标
  9. Spring+SpringMVC+mybatis+Quartz整合
  10. 一个android应用开发的感悟