利用Docker工具在虚拟机中搭建ONOS控制器集群;配置环境,使得另一台虚拟机的Mininet能够连接容器内的ONOS。
虚拟机操作系统: Ubuntu server 16.04.4 LTS 64位
sudo docker search onos
sudo docker pull onosproject/onos:1.12.1
sudo docker run -i -t -P --name onos-1 onosproject/onos:1.12.1 /bin/bash
sudo docker run -i -t -P --name onos-2 onosproject/onos:1.12.1 /bin/bash
sudo docker run -i -t -P --name onos-3 onosproject/onos:1.12.1 /bin/bash
(默认加入到docker的docker0网络,bridge模式)
可以使用-p参数指定容器端口映射到宿主机的实际物理机的端口号:
sudo docker run -d -i -t -p 6654:6653 -P --name onos-1 onosproject/onos:1.12.1 /bin/bash
其中,6654为物理机端口,6653为onos容器的端口号。
注意-P参数也不能漏掉,表示未指定端口映射的容器端口采用随即映射。
若想后台运行,加上-d参数。
sudo docker ps -a
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <容器ID>
查看后,IP分别为172.17.0.2、172.17.0.3、172.17.0.4
进入同一个界面同一个进程,可能会失败(阻塞);进入onos>界面
sudo docker attach <容器ID/容器名>
创建新的子进程;进入bash-4.4界面
sudo docker exec -it <容器ID/容器名> /bin/bash
进入到onos-form-cluster所在的目录
cd bin
执行集群命令
./onos-form-cluster 172.17.0.2 172.17.0.3 172.17.0.4
其中172.17.0.2 172.17.0.3 172.17.0.4分别为三个容器的IP地址。
ssh -p 8101 [email protected] -o UserKnownHostsFile=/dev/null
onos> app activate org.onosproject.openflow
onos> app activate org.onosproject.fwd
可以继续利用GUI观察三个控制器的集群
在浏览器输入
http://192.168.1.121:32784/onos/ui/index.html
其中192.168.1.121为宿主机IP地址;32784为容器的8181端口映射到宿主机的端口号
sudo route add -net 172.17.0.0/16 gw 192.168.1.121 eth0
(但是重启后会丢掉)
其中192.168.1.121为onos容器所在宿主机的IP地址;eth0为onos容器(docker)所在虚拟机的网卡(与宿主机同一网段)
sudo mn --switch=ovsk,protocols=OpenFlow13 --controller remote,ip=172.17.0.2 --controller remote,ip=172.17.0.3 --controller remote,ip=172.17.0.4
http://192.168.1.121:32779/onos/ui/index.html