因爲工做須要,在看OpenDaylight (一個SDN的開源控制器)html
官方Tutorial有一個比較基礎且介紹比較詳細的文檔(http://sdnhub.org/tutorials/opendaylight/ -這個文檔做爲入門OpenDaylight 很不錯,真心推薦)java
Turorail文檔爲對應的項目提供了VM鏡像,恰好最近也在看Docker,遂決定製做一個docker鏡像,方便、快捷~linux
OK,開始準備環境git
鏡像基於centosgithub
> docker run -it --name SDNHub_Opendaylight_Tutorial centosdocker
更新apache
> yum updatecentos
安裝基本依賴(YUM安裝)bash
一、git - Tutorial項目代碼使用GIT託管 https://github.com/sdnhub/SDNHub_Opendaylight_Tutorialoracle
二、lrzsz - 方便文件傳輸
三、wget - 須要下載文件
> yum install git lrzsz wget -y
環境準備(從安裝包安裝)
一、JDK - OpenDaylight 使用Java語言開發,這裏使用OracleJDK 而且使用Oracle官方推薦版本 JDK 1.8
二、Maven - OpenDaylight 使用Maven進行包管理,而且要求Maven3.1.1版本以上(目前yum直接安裝的maven是3.0.5),這裏須要從官網下載安裝
官網下載好JDK的RPM包和Maven的tar包
一、JDK - http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 目前最新版 8u131
二、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