• Ubuntu环境的docker实践——SDN进阶操作


    1.复制主机文件到容器

    为了方便后续安装,将本地已有的安装包直接复制到容器内。

    docker cp <主机目录> <容器id>:<容器内目录>
    

    例如将本地/home/ubuntu/Downloads/内的文件复制到容器99e69f9c2311的/home/apps中

    $ docker cp /home/ubuntu/Downloads/ 99e69f9c2311:/home/apps
    

    2.容器内Java安装

    将jdk安装文件jdk-8u231-linux-x64.tar.gz拷贝到容器的/usr/local/java目录下(也可选择其他目录),解压
    配置环境变量

    $ nano ~/.bashrc
    

    在末尾追加以下内容,crtl o保存,ctrl x退出

    export JAVA_HOME=/usr/local/java/**jdk1.8.0_231**
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    

    使配置生效

    $ source ~/.bashrc
    

    3.容器内安装OpenDayLight 0.4.4-Beryllium-SR4 和 0.6.4-Carbon

    • 安装时遇到的坑jdk 11不支持Beryllium(Carbon没试过),解压后karaf无法启动,要用jdk 8
      之后安装和正常环境下一致。
    • 为了方便查看ip,需要使用ifconfig命令,如果在/sbin/下找不到,就要安装
    $ apt-get install net-tools
    
    • 打包更新镜像
    $ docker commit -m "install odl Be and C" -a "wdf000" 99e69f9c2311 wdf000/opendaylight:20200108
    
    • 在新的镜像上运行新的容器,取名为odl,还要将6633/6653两个控制器和交换机的通讯端口,以及8181控制器的web端口映射到外层系统主机,便于外层系统直接访问
    $ docker run -itd -p 8181:8181 -p 6653:6653 -p 6633:6633 --name odl wdf000/opendaylight:20200108
    

    运行容器ODL,并启动控制器,在外层系统主机直接访问。

    4.安装SDN 仿真工具Mininet

    直接装在容器内

    • 安装时遇到的坑执行安装脚本~/mininet/util/install.sh时报错./install.sh: line 46: sudo: command not found
      方法如下:
    $ apt-get update
    $ apt-get install sudo
    
    $ #修改DNS,添加阿里的DNS(保留原有的DNS)
    $ sudo nano /etc/resolv.conf
    
    nameserver 223.5.5.5  
    nameserver 223.6.6.6
    

    附上阿里Ubuntu镜像的源

    deb http://mirrors.aliyun.com/ubuntu/ xenial main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    
    • 安装时遇到的坑下载openflow时网速很慢,下载进度卡住不动了
      方法如下:
      修改install.sh脚本,将git clone git://github.com/mininet/openflow 修改为 git clone https://github.com/mininet/openflow.git

    • 安装时遇到的坑下载optest时报错:fatal: read error: Connection reset by peer
      方法如下:
      修改install.sh安装脚本,将git clone git://github.com/floodlight/oftest 修改为 git clone https://github.com/floodlight/oftest.git

    • 终于装好了

    • 运行时遇到的坑Error setting resource limits. Mininet's performance may be affected.

      暂时没有解决。

    安装在ubuntu上

    $ git clone https://github.com/mininet/mininet.git
    $ sudo ./mininet/util/install.sh -a
    

    安装过程如果遇到网络问题,按照前面说的方法,修改安装脚本里面git clone的地址即可解决。

    运行正常。(容器内安装很可能因为资源不足的原因,才会出现运行错误,容器内使用的ubuntu是从hub docker上pull下来的,只有百兆,和实际的ubuntu功能会差很多。)

    5.Mininet连接运行在容器内的OpenDaylight

    $ 获取容器ip地址
    $ docker inspect --format '{{.NetworkSettings.IPAddress }}' <容器id>
    

    Carbon

    $ sudo mn --controller=remote,ip=172.17.0.2,port=6633 --switch=ovsk,protocols=OpenFlow13
    

    Beryllium

    刚开始控制器没连上,尝试将6633端口改为6653,成功。

    $ sudo mn --controller=remote,ip=172.17.0.2,port=6653 --switch=ovsk,protocols=OpenFlow13
    

  • 相关阅读:
    jQuery的动画效果
    jQuery的event事件
    设计模式 命令行模式
    桥接模式
    享元模式
    代理模式
    门面模式
    代理模式
    python基础-abstractmethod、__属性、property、setter、deleter、classmethod、staticmethod
    库存负数
  • 原文地址:https://www.cnblogs.com/fjlinww/p/12159911.html
Copyright © 2020-2023  润新知