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 操作系统 ...
随机推荐
- Postgresql 锁查看
之前版本 PostgreSQL 的 pg_stat_activity 视图的 waiting 字段判断会话是否等待锁资源(通俗地讲, waiting 值为true表示申请不到锁资源处于等待状态),但是 ...
- js框操作-----Selenium快速入门(八)
js框,就是JavaScript中的警告框(alert),确认框(confirm),提示框(prompt),他们都是模态窗口.什么是模态窗口,大家可以自行百度一下,简单说就是弹出的窗口是在最顶端的,你 ...
- JWT+ASP.NET MVC 时间戳防止重放攻击
时间戳作用 客户端在向服务端接口进行请求,如果请求信息进行了加密处理,被第三方截取到请求包,可以使用该请求包进行重复请求操作.如果服务端不进行防重放攻击,就会服务器压力增大,而使用时间戳的方式可以解 ...
- Js加密算法
使用crypto-js在浏览器上对数据加密签名 重要知识点: CryptoJS.lib.WordArray WordArray对象可以理解为byte[] CryptoJS.enc 提供编码转换,从字 ...
- Linear and Quadratic Programming Solver ( Arithmetic and Algebra) CGAL 4.13 -User Manual
1 Which Programs can be Solved? This package lets you solve convex quadratic programs of the general ...
- DDoS防护之TCP防护
本文由 网易云 发布. TCP协议,相信对于每一个开发工程师都不陌生.由于该协议是一个面向连接,可靠的特性,广泛应用于现在互联网的应用中.如常见的Web.SSH.FTP等都是基于TCP协议.目前TC ...
- Day 31 面向对象考试题 第四次考试.
一 基础知识和函数: 1.文件操作有哪些模式?请简述各模式的作用 r ,只读模式[默认模式,文件必须存在,不存在则抛出异常] w,只写模式[不可读:不存在则创建:存在则清空内容] x, 只写模式[不可 ...
- 初识面向对象-封装、property装饰器、staticmathod(静态的方法)、classmethod(类方法) (五)
封装 # class Room:# def __init__(self,name,length,width):# self.__name = name# self.__length = length# ...
- 队列(链式队列)----C语言
链式队列----用链表实现,链式队列就是一个操作受限的单向链表,如果读者了解单向链表的建立过程,那理解链式队列就很容易了,先回顾一下单向链表的建立过程 (不熟悉单向链表的可以先看看另一片随笔,再回来看 ...
- (转)飘逸的python - 增强的格式化字符串format函数
原文:https://blog.csdn.net/handsomekang/article/details/9183303 Python字符串格式化--format()方法-----https://b ...