由於工作需要,在看OpenDaylight (一個SDN的開源控制器)
官方Tutorial有一個比較基礎且介紹比較詳細的文檔(http://sdnhub.org/tutorials/opendaylight/ -這個文檔作為入門OpenDaylight 很不錯,真心推薦)
Turorail文檔為對應的項目提供了VM鏡像,剛好最近也在看Docker,遂決定制作一個docker鏡像,方便、快捷~
OK,開始准備環境
鏡像基於centos
> docker run -it --name SDNHub_Opendaylight_Tutorial centos
更新
> yum update
安裝基本依賴(YUM安裝)
1、git - Tutorial項目代碼使用GIT托管 https://github.com/sdnhub/SDNHub_Opendaylight_Tutorial
2、lrzsz - 方便文件傳輸
3、wget - 需要下載文件
> yum install git lrzsz wget -y
環境准備(從安裝包安裝)
1、JDK - OpenDaylight 使用Java語言開發,這里使用OracleJDK 並且使用Oracle官方推薦版本 JDK 1.8
2、Maven - OpenDaylight 使用Maven進行包管理,並且要求Maven3.1.1版本以上(目前yum直接安裝的maven是3.0.5),這里需要從官網下載安裝
官網下載好JDK的RPM包和Maven的tar包
1、JDK - http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 目前最新版 8u131
2、Maven - http://maven.apache.org/download.cgi 目前最新版 3.5.0
使用rz命令將下載好的安裝包上床到容器內
安裝rpm包(安裝后需要配置JAVA_HOME-Maven需要JAVA_HOME環境變量)
> yum localinstall jdk-8u131-linux-x64.rpm -y
配置環境變量
> vi ~/.bash_profile
追加內容
export JAVA_HOME=/usr/java/jdk1.8.0_131
安裝Maven(解壓后配置環境變量即可)
> tar zxvf apache-maven-3.5.0-bin.tar.gz
> vi ~/.bash_profile
追加內容
export MAVEN_HOME=/apache-maven-3.5.0 export PATH=${PATH}:${MAVEN_HOME}/bin
使環境變量生效
> source ~/.bash_profile
驗證Maven和java是否安裝成功
OK,接着克隆和編譯 SDNHub_Opendaylight_Tutorial 項目
克隆項目
> cd ~
> git clone https://github.com/sdnhub/SDNHub_Opendaylight_Tutorial.git
切換到項目目錄
> cd SDNHub_Opendaylight_Tutorial
開始編譯
> mvn install -nsu
Loooooong Waiting……
艾瑪!編譯報錯
[ERROR] Failed to execute goal org.opendaylight.yangtools:yang-maven-plugin:0.8.1-Beryllium-SR1:generate-sources (default) on project learning-switch-impl: Execution default of goal org.opendaylight.yangtools:yang-maven-plugin:0.8.1-Beryllium-SR1:generate-sources failed: Plugin org.opendaylight.yangtools:yang-maven-plugin:0.8.1-Beryllium-SR1 or one of its dependencies could not be resolved: Could not transfer artifact org.opendaylight.controller:yang-jmx-generator-plugin:jar:0.4.1-Beryllium-SR1 from/to opendaylight-release (http://nexus.opendaylight.org/content/repositories/opendaylight.release/): Connect to nexus.opendaylight.org:443 [nexus.opendaylight.org/72.3.167.142] failed: Connection timed out (Connection timed out)
解決方案:
在爆棧網找到 https://stackoverflow.com/questions/36561406/maven-dependency-error-when-i-start-to-install-mvn-nsu/37322101#37322101
經過驗證,可以解決該問題
> wget -q -O - https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml > ~/.m2/settings.xml
好,重新編譯
> mvn install -nsu
完成~
OK,最后將制作好的容器打包成docker鏡像,並提交到Docker Hub ~
容器打包成鏡像
> docker commit cd1aef1d6c30 sdnhub_opendaylight_tutorial:1.0
查看鏡像
鏡像提交到docker hub
先申請DockerHub賬號 - https://hub.docker.com/
給存在於本地的鏡像打標簽,要帶上dockerhub 用戶名(如果最后不帶冒號加版本,就默認為 :lastest版本)
>docker tag sdnhub_opendaylight_tutorial:1.0 guang384/sdnhub_opendaylight_tutorial
登錄DockerHub
> docker login
提交到dockerhub
> docker push guang384/sdnhub_opendaylight_tutorial
Waiting……
Done