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 操作系统 ...
随机推荐
- MySqlException: The user specified as a definer ('root'@'%') does not exist解决方法
之前因为MySql安全问题,将root@%改为允许特定ip段进行远程连接,结果有一个接口报The user specified as a definer ('root'@'%') does not e ...
- Visual Studio 编译信息细度显示设置
visual studio 项目在编译时,可根据调试需要设置output窗口输出内容的详细程度,这对于bug或warning的解决具有很大帮助.具体设置如下: 依次点击:"Tools&quo ...
- Day71 分页,cookie and Session
cookie 是保存在客户端的键值对. cookie本身最大支持4096字节,保存在客户端的 session是保存在服务器端的键值对.(依赖cookie) cookie和session cookie的 ...
- python os.path 的使用
import os #该文件所在位置:D:\第1层\第2层\第3层\第4层\第5层\test11.py path1 = os.path.dirname(__file__) print(path1)#获 ...
- ES六
来自:http://es6.ruanyifeng.com/#docs/style 1,=> // bad console.log([1,2,3,4].map(function(x){return ...
- D05——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D05 20180815内容纲要: 1 模块 2 包 3 import的本质 4 内置模块详解 (1)time&datetime (2)datetime ...
- python学习笔记03-用户输入
name=Input(“your name”) 此处接受的数据类型为字符串 整数转字符串 str(123) 整数转字符串 int(“123”)
- Java并发编程实践读书笔记(4)任务取消和关闭
任务的取消 中断传递原理 Java中没有抢占式中断,就是武力让线程直接中断. Java中的中断可以理解为就是一种简单的消息机制.某个线程可以向其他线程发送消息,告诉你“你应该中断了”.收到这条消息的线 ...
- 【learning】vim爆改记 (如何让vim用起来像devc++)
由于本蒟蒻NOIP人品大爆发,能去冬令营,故准备开始练习使用linux下的IDE:vim 在dalao DTZ的帮助下,我装好了vim,并做了最初的配置. 然而........好难用啊,怎么和devc ...
- AppScan安全测试入门操作
appscan:可以对网站等 Web 应用进行自动化的应用安全扫描和测试,也就是经常说的安全测试 工作原理:是通过对web应用进行安全攻击来检查网站是否存在漏洞. 初步了解到的 创建新的扫描-> ...