Docker

Posted minseo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker相关的知识,希望对你有一定的参考价值。

  OVS介绍

什么是OpenVSwich?
OpenvSwich:开放虚拟交换标准,是一种基于开源Apache2.0许可证的多层软件交换机,专门管理多租赁云计算网络环境,支持KVM、Xen等虚拟化技术。
支持以下功能:
1.支持标准802.1Q VLAN模块的Trunk和access端口模式;
2.QoS(Quality of Service)配置,及管理;
3.支持OpenFlow协议;
4.支持GRE、VXLAN、STT和LISP隧道;
5.具有C和Python接口配置数据库;
6.支持内核态和用户态的转发引擎设置;
7.支持流量控制及监控。
主要组成部分:
ovs-vswitchd 一个实现交换机的守护程序
ovsdb-server 一个轻量级数据库,ovs-vswitchd查询以获取其配置
ovs-dpctl 用于配置交换机的内核模块工具
ovs-vsctl 用于查看和更新ovs-vswitchd的配置工具
ovs-appctl 一个向运行OVS守护程序发送命令的工具
还提供了openflow的工具:
ovs-ofctl 用于查看和控制OpenFlow交换机和控制器
ovs-pki 用于创建和管理公钥
ovs-tcpundump 解析openflow消息

  安装前可以使用命令docker network rm 删除无关的网络   

  安装部署OVS并建立GRE隧道

  节点1:192.168.56.128 容器网段:172.17.1.0/24

  节点2:192.168.56.129 容器网段:172.17.2.0/24

  修改容器的默认网段需要修改配置文件 不能是172.17.1.0/24

技术分享图片

 

  安装OVS

apt-get install openvswitch-switch bridge-utils

   安装完成会以进程的方式启动两个进程一个虚拟交换机一个轻量级数据库

技术分享图片

  创建网桥并激活

ovs-vsctl add-br br0
ip link set dev br0 up

   .将gre0虚拟接口加入网桥br0,并设置接口类型和对端IP地址(远程IP指定对端)

ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.56.129

   添加docker0网桥到OVS网桥br0

brctl addif docker0 br0

   查看网桥信息

ovs-vsctl show

   

c0cdc0b1-4a93-4a3e-aaf7-6096abc32a8d
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "gre0"
            Interface "gre0"
                type: gre
                options: {remote_ip="192.168.56.129"}
    ovs_version: "2.9.0"

   在节点2执行操作

apt-get install openvswitch-switch bridge-utils
ps -ef|grep open
ovs-vsctl add-br br0
ip link set dev br0 up
ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.56.128
brctl addif docker0 br0
ovs-vsctl show

  添加静态路由两个节点均操作

ip route add 172.17.0.0/16 dev docker0

  创建容器测试互通

docker run -it busybox

   其中节点1的ip为172.17.1.2 节点2的ip为172.17.2.2 测试是相通的

  

  工作原理

 技术分享图片

 

  

以上是关于Docker的主要内容,如果未能解决你的问题,请参考以下文章

markdown docker-compose片段

sh Docker片段

《Docker 源码分析》全球首发啦!

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)

将 Docker 容器限制为单个 cpu 核心