由于工作需要,在看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

Docker容器打包成镜像 - OpenDaylight官方 SDN Hub Tutorial VM 的docker镜像的更多相关文章

  1. SpringCloudAlibaba微服务docker容器打包和部署示例实战

    概述 我们使用前面<SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(中)>的两个微服务示例,分别是库存微服务和订单微服务,基于Nacos注册中心和配置 ...

  2. odoo开发笔记 -- docker容器打包到另一台服务器部署异常

    场景描述: odoo.conf文件指定了数据库配置,如果docker打包的时候,没注意,新环境启动该镜像,会导致并没有连接本地的数据库,如果你配置文件中的数据库地址,当前这台服务器也可以访问到,那么问 ...

  3. 转:为Docker容器设置固定IP实现网络联通(1)——通过Pipework为Docker容器设置

    https://blog.csdn.net/chinagissoft/article/details/51250839 1. 创建并启动一个容器: docker run --cap-add=NET_A ...

  4. centos7如何将docker容器配置成开机自启动

    docker 服务器开机自启动: 1.systemctl is-enabled docker.service  检查服务是否开机启动 2.systemctl enable docker.service ...

  5. docker 将正在运行的容器打包为镜像

    将容器打包成镜像 docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签 OPTIONS ...

  6. docker容器安装及使用技巧

    关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...

  7. Docker容器入门篇

    第1章 Docker简介 1.1 Docker容器介绍 Docker官网:https://www.docker.com/ 什么是docker? Docker 最初是 dotCloud 公司创始人 So ...

  8. 2.Docker容器学习之新生入门必备基础知识

    0x02 Docker 核心概念 描述:Docker的三大核心概念镜像/容器和仓库, 通过三大对象核心概念所构建的高效工作流程; 1.镜像 [image] 描述:images 类似于虚拟机镜像,借鉴了 ...

  9. Docker + webpack 打包前端项目

    码云代码地址: https://gitee.com/caonimashi/docker_deployment_front_end    构建基础镜像: 1.下载一个 Apline Linux 操作系统 ...

随机推荐

  1. spring获取webapplicationcontext,applicationcontext几种方法详解(转)

    方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContext(&quo ...

  2. 微软儿童编程技术,kodu(酷豆)为儿童创造一个游戏世界

    受微软青年星火项目组的邀请,我和微软项目组的朋友参加了一场针对儿童编程的技术指导. 儿童和编程,本来是两个完全不靠边的词.在大家的常规思维中,编程一直是软件开发人员的事情,是高科技类型的工作,高不可攀 ...

  3. dD Geometry Kernel ( Geometry Kernels) CGAL 4.13 -User Manual

    1 Introduction This part of the reference manual covers the higher-dimensional kernel. The kernel co ...

  4. 解决创建带有NameSpace的XML文件出现空白xmlns的问题

    为了能够让用户自行部署ClickOnce应用程序,需要编写一个生成ClickOnce应用程序的ClickOnce专用安装程序setup.exe,而生成这个setup.exe的方法就是编写一个XML格式 ...

  5. Dockerfile数据管理

    本文介绍Docker内部以及容器间的数据管理,在容器中管理数据主要有两种方式: 数据卷(Volumes) 挂载主机目录(Bind mounts) 数据卷 数据卷是一个可供一个或则多个目录使用的特殊目录 ...

  6. D03——C语言基础学习PYTHON

    C语言基础学习PYTHON——基础学习D03 20180804内容纲要: 1 函数的基本概念 2 函数的参数 3 函数的全局变量与局部变量 4 函数的返回值 5 递归函数 6 高阶函数 7 匿名函数 ...

  7. 给button添加UAC的小盾牌图标

    Sample Code: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private v ...

  8. PHP查找与搜索数组元素

    in_array()函数 in_array()函数在一个数组汇总搜索一个特定值,如果找到这个值返回true,否则返回false.其形式如下: boolean in_array(mixed needle ...

  9. (转)Python标准库:内置函数print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

    原文:https://blog.csdn.net/caimouse/article/details/44133241 https://www.cnblogs.com/owasp/p/5372476.h ...

  10. 48位MAC转化为唯一的128位IPV6地址

    根据EUI_64规范,一个MAC地址生成唯一的一个IPV6地址. ①.反转MAC的第七位为1. ②.在24bit后加入FFFE. ③.在最前面加上FE80::. 示例: