Docker容器打包成镜像 - OpenDaylight官方 SDN Hub Tutorial VM 的docker镜像
由于工作需要,在看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镜像的更多相关文章
- SpringCloudAlibaba微服务docker容器打包和部署示例实战
概述 我们使用前面<SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(中)>的两个微服务示例,分别是库存微服务和订单微服务,基于Nacos注册中心和配置 ...
- odoo开发笔记 -- docker容器打包到另一台服务器部署异常
场景描述: odoo.conf文件指定了数据库配置,如果docker打包的时候,没注意,新环境启动该镜像,会导致并没有连接本地的数据库,如果你配置文件中的数据库地址,当前这台服务器也可以访问到,那么问 ...
- 转:为Docker容器设置固定IP实现网络联通(1)——通过Pipework为Docker容器设置
https://blog.csdn.net/chinagissoft/article/details/51250839 1. 创建并启动一个容器: docker run --cap-add=NET_A ...
- centos7如何将docker容器配置成开机自启动
docker 服务器开机自启动: 1.systemctl is-enabled docker.service 检查服务是否开机启动 2.systemctl enable docker.service ...
- docker 将正在运行的容器打包为镜像
将容器打包成镜像 docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签 OPTIONS ...
- docker容器安装及使用技巧
关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...
- Docker容器入门篇
第1章 Docker简介 1.1 Docker容器介绍 Docker官网:https://www.docker.com/ 什么是docker? Docker 最初是 dotCloud 公司创始人 So ...
- 2.Docker容器学习之新生入门必备基础知识
0x02 Docker 核心概念 描述:Docker的三大核心概念镜像/容器和仓库, 通过三大对象核心概念所构建的高效工作流程; 1.镜像 [image] 描述:images 类似于虚拟机镜像,借鉴了 ...
- Docker + webpack 打包前端项目
码云代码地址: https://gitee.com/caonimashi/docker_deployment_front_end 构建基础镜像: 1.下载一个 Apline Linux 操作系统 ...
随机推荐
- 微软发布TFS 2018!
也许你还没来得及使用TFS 2017,今天,微软已经发布了TFS 2018的第一个版本(RC1). 与之前所有的候选版本一样,这是一个正式上线(微软成称为go-live)的TFS版本.如果你计划采纳T ...
- 使用ABP框架踩过的坑系列1
企业级(例如ERP)应用, 一遍一遍的在重复:认证.验证.异常处理.日志.国际化和本地化.数据库连接管理.配置管理. 审计记录等,同时.NET有很多最佳实践:分层.模块化.DDD领域驱动.DI ...
- Js加密算法
使用crypto-js在浏览器上对数据加密签名 重要知识点: CryptoJS.lib.WordArray WordArray对象可以理解为byte[] CryptoJS.enc 提供编码转换,从字 ...
- musql 添加字段语句
修改表tax_version添加up_content属性为text类型非空,注释为“更新内容”,字段添加再“name”属性后面 ALTER TABLE `tax_version` ADD `up_co ...
- 网易云社区有奖问答活动第二期——技术领导力、深入分布式、PHP圣经、Linux运维、Unity……三月热点图书等你拿!
网易云社区第二期有奖问答活动开始了!(第一期活动已结束:人工智能图书大抽奖!) 欢迎积极参与网易云社区,讨论问题,交流心得.我们本期准备了一批技术领域热点图书,送给参与社区的朋友们,将以抽奖的形式送出 ...
- 机器学习、深度学习、和AI算法可以在网络安全中做什么?
本文由 网易云发布. 本文作者:Alexander Polyakov,ERPScan的首席技术官和联合创始人.EAS-SEC总裁,SAP网络安全传播者. 现在已经出现了相当多的文章涉及机器学习及其保 ...
- akka开发(一)HelloWorld
package com.hfi.helloakka; import akka.actor.ActorRef; import akka.actor.Props; import akka.actor.Un ...
- mybatis的dao向mapper.xml传入多参数
https://www.cnblogs.com/super-chao/p/7722411.html 如果两种不同类型的参数传入,parameterType可以不写,直接获取#{0},#{1}就可以传入 ...
- docker 下载加速
执行这个命令: curl -SSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud. ...
- FunDA(12)- 示范:强类型数据源 - strong typed data sources
FunDA设计的主要目的是解决FRM(Functional Relation Mapping)如Slick这样的批次型操作工具库数据源行间游动操作的缺失问题.FRM产生的结果集就是一种静态集合,缺乏动 ...