Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。总之就是轻便型的虚拟环境。
考虑到ONOS的实验环境搭建不易,Docker有助于我们移植搭建好的环境。
Docker安装 1、安装软件包apt-transport-https,使APT系统能够被https解析
1 $ sudo apt-get install apt-transport-https
2、添加Docker repository key到本地keychain
1 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
3、添加docker软件仓库到软件源,升级软件源,安装lxc-docker包
1 2 3 $ sudo sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list" $ sudo apt - get update $ sudo apt-get install lxc-docker
注:上述操作可以使用下面的脚本完成。
1 $ curl -sSL https://get.docker.com/ubuntu/ | sudo sh
4、验证docker安装完成,可以使用下面命令测试
1 $ sudo docker run -i -t ubuntu /bin/bash
-i interactive, -t tty, -p port可以多次使用指定多个Port映射, -P端口映射随机分配
ONOS(Open Network Operation System) ONOS是首款开源的SDN网络操作系统,主要面向服务提供商和企业骨干网。ONOS的设计宗旨是满足网络需求实现可靠性强、性能好、灵活度高。此外,ONOS的北向接口抽象层和API支持简单的应用开发,而通过南向接口抽象层和接口则可以管控OpenFlow或者传统设备。总体来说,ONOS将会实现以下功能:
SDN控制层面实现电信级特征(可靠性强,性能好,灵活度高);
提供网络敏捷性强有力保证;
帮助服务提供商从现有网络迁移到白牌设备;
减少服务提供商的资本开支和运营开支。 下面介绍ONOS安装(Ubuntu源码安装)
1 系统要求 安装ONOS对操作系统有如下要求
Ubuntu Server 14.04 LTS 64-bit
2GB or more RAM
2 or more processors
需要安装如下软件,如果不用git获取源码,GIT可以不需要安装。
Java 8 JDK (Oracle Java recommended; OpenJDK is not as thoroughly tested)
Apache Maven (3.0 and later)
git
bash (for packaging & testing)
Apache Karaf (3.0.2 and later)
2 安装依赖 安装apache-karaf和apache-maven apache-karaf的版本为3.0.2或以上版本,apache-maven的版本至少为3.0,这里使用版本3.2.2。创建/Applications目录。之所以要安装到这个目录,是因为onos源码中已经设置将apache-karaf、apache-maven放到/Applications目录。这个目录也可以通过更改~/onos/tools/dev/bash_profile修改,但是为了避免不必要的操作,这里按照默认创建文件夹。
1 2 3 4 5 6 $ cd ; mkdir Downloads Applications $ cd Downloads $ wget http://download.nextag.com/apache/karaf/3.0.2/apache-karaf-3.0.2.tar.gz $ wget http://www.apache.org/dist/maven/binaries/apache-maven-3.2.2-bin.tar.gz $ tar -zxvf apache-karaf-3.0.2.tar.gz -C ../Applications/ $ tar -zxvf apache-maven-3.2.2-bin.tar.gz -C ../Applications/
安装java8 1 2 3 4 $ sudo apt-get install software-properties-common -y $ sudo add-apt-repository ppa:webupd8team/java -y $ sudo apt-get update $ sudo apt-get install oracle-java8-installer oracle-java8-set-default -y
正确安装后,java -version和mvn –version打印的java版本应该一致。
3 安装 ONOS 下载ONOS源码 将ONOS源码下载到合适的目录(笔者放在/home目录下),切换到1.0.0分支
1 $ git clone https://gerrit.onosproject.org/onos -b 1.0.0
环境设置 安装ONOS之前,需要设置ONOS_ROOT和KARAF_ROOT等路径,切换到root权限用户,在/etc/profile文件的最后添加如下设置:
1 2 3 4 5 export ONOS_ROOT=/home/onos/onos-onos-1.0 export KARAF_ROOT=/root/Applications/apache-karaf-3.0.2 export JAVA_HOME=/usr/lib/jvm/java-8-oracle export M2_HOME=/usr/local/apache-maven export PATH=$PATH:$M2_HOME/bin
保存后执行
1 2 $ source /etc/profile $ source $ONOS_ROOT /tools/dev/bash_profile
如果没有报错,则表示执行成功 可能的错误有:
No such file or directory
No such cell: local
构建ONOS 以上的步骤一切顺利后,可以开始构建ONOS,执行下列命令
1 2 $ cd onos/ //目录可能因人而异 $ mvn clean install
安装需要5~10分钟不等.
运行ONOS 需要编辑$KARAF_ROOT/etc/org.apache.karaf.features.cfg文件
添加下面的内容到 featuresRepositories: mvn:org.onosproject/onos-features/1.0.0/xml/features
接着添加下面的内容到featuresBoot: onos-api,onos-core-trivial,onos-cli,onos-openflow,onos-app-fwd,onos-app-mobility,onos-gui
之后就可以启动ONOS了:
启动时间较长,请耐心等待。
但是,Ubuntu源码安装并不总是能够成功的。在执行ONOS_ROOT/tools/dev/bash_profile和构建ONOS时,很容易出错。Docker在这时能发挥它应有的作用。
Docker搭建ONOS环境 声明:建议使用root用户做以下操作,可以省去sudo的麻烦
1 获取ONOS镜像 搜索镜像 执行“docker search onos”来搜索相关的镜像,可以从STARS来确定资源的好坏。因为ONOS刚出来不久,还没有最完美的镜像。这里我们选择“ywang1007/onos-buildenv”镜像。
下载镜像 下载选择的ONOS镜像到本地机器,这里需要花费一段时间。
pull 后面加上 -a可以下载该镜像的所有版本
查看镜像 查看已经下载好的镜像
里面已经包含了下载好的镜像
创建容器 为了展开实验,我们需要创建一个容器,进行镜像内的实验。
值得说的是,ONOS有web界面,端口是8181,为了可以页面访问ONOS,要做两个端口绑定。容器的6633端口绑定到主机的6633端口,容器的8181端口绑定到主机的8181端口。之后宿主机器访问“http://your ip address:8181/onos/ui/index.html”即可查看ONOS状态。
创建好后,可以使用“docker ps -a”来查看当前容器情况。
-a 全部 -l 最新 和Docker容器相关的命令有
docker start 启动某个容器
docker stop 关闭某个容器
docker attach 连接到某个正在运行的容器
docker rm 移除某个停止运行的容器
docker的相关命令可以通过docker –help来得到
之后的操作类似于上一节介绍的,搭建环境,建构运行ONOS。在宿主机器上运行mininet,使用pingall命令,可以证明onos已经在工作。过程略。
好不容易搭建好的onos环境最好用新镜像的方式存储起来,方便下次直接使用。
此时再次查看本机的镜像
就会发现刚才保存的新的镜像。
总结 本文主要介绍了docker的安装与简单使用以及ONOS的环境搭建。从中可以看到docker对于快速搭建实验环境有很大帮助,相信未来会有长远的发展。另外,这里对ONOS的性能并未做详细分析,笔者将在日后通过实验对ONOS进行考察。
副产品 实验过程中,因为对profile文件做过修改,曾出现过开机无法登陆的情况。orz..
问题:登录成功后,自动跳转回登陆页面
解决方法:
Ctrl+Alt_F1切换到文本模式
将在profile和bash_profile做过的修改撤销掉
find Xauthor* 将查到的所有文件要么sudo chmod 777 要么rm掉
startx切换回来重新登录即可