Docker安装与ONOS实验环境搭建
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 | $ sudo sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list" |
注:上述操作可以使用下面的脚本完成。
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 | $ cd; mkdir Downloads Applications |
安装java8
1 | $ sudo apt-get install software-properties-common -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 | export ONOS_ROOT=/home/onos/onos-onos-1.0 |
保存后执行
1 | $ source /etc/profile |
如果没有报错,则表示执行成功
可能的错误有:
- No such file or directory
- No such cell: local
构建ONOS
以上的步骤一切顺利后,可以开始构建ONOS,执行下列命令
1 | $ cd onos/ //目录可能因人而异 |
安装需要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了:
1 | $ karaf clean |
启动时间较长,请耐心等待。
但是,Ubuntu源码安装并不总是能够成功的。在执行ONOS_ROOT/tools/dev/bash_profile和构建ONOS时,很容易出错。Docker在这时能发挥它应有的作用。
Docker搭建ONOS环境
声明:建议使用root用户做以下操作,可以省去sudo的麻烦
1 | $ sudo -s |
1 获取ONOS镜像
搜索镜像
执行“docker search onos”来搜索相关的镜像,可以从STARS来确定资源的好坏。因为ONOS刚出来不久,还没有最完美的镜像。这里我们选择“ywang1007/onos-buildenv”镜像。
下载镜像
下载选择的ONOS镜像到本地机器,这里需要花费一段时间。
1 | # docker pull ywang1007/onos-buildenv |
pull 后面加上 -a可以下载该镜像的所有版本
查看镜像
查看已经下载好的镜像
1 | # docker images |
里面已经包含了下载好的镜像
创建容器
为了展开实验,我们需要创建一个容器,进行镜像内的实验。
1 | # docker run -i -t -p 0.0.0.0:6633:6633 -p 0.0.0.0:8181:8181 --name ONOS ywang1007/onos-buildenv /bin/bash |
值得说的是,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环境最好用新镜像的方式存储起来,方便下次直接使用。
1 | # docker commit xxx onos-1.0.0 //提交一个新的镜像 |
此时再次查看本机的镜像
1 | # docker images |
就会发现刚才保存的新的镜像。
总结
本文主要介绍了docker的安装与简单使用以及ONOS的环境搭建。从中可以看到docker对于快速搭建实验环境有很大帮助,相信未来会有长远的发展。另外,这里对ONOS的性能并未做详细分析,笔者将在日后通过实验对ONOS进行考察。
副产品
实验过程中,因为对profile文件做过修改,曾出现过开机无法登陆的情况。orz..
问题:登录成功后,自动跳转回登陆页面
解决方法:
- Ctrl+Alt_F1切换到文本模式
- 将在profile和bash_profile做过的修改撤销掉
- find Xauthor* 将查到的所有文件要么sudo chmod 777 要么rm掉
- startx切换回来重新登录即可