当前位置: 首页 > news >正文

【VMCloud云平台】拥抱Docker(四)定制属于自已的镜像

Docker本身有很多优秀的镜像可供我们下载使用,但有时候依然满足不了我们的需求,比如博主在尝试了N多次通过Jdeathe的镜像进行PHP持续集成环境的整合一直是失败的,这时候我们就应该考虑去打造一款属于我们自已的镜像,使用最纯净的os底层,用原生的环境来实现我们的需求。本篇涉及到的架构如下图所示:

image

1、有朋友可能会说,既然我有不同的需求,那么我直接pull个纯净的镜像,然后起两个容器来分别做对应的功能不就可以了,何必要自已折腾一个镜像呢?首先,为了学习目的,做一个自已的镜像并熟悉制作镜像的过程是有必要的,其次,在以后扩展时,我们可以基于该镜像来进行扩展,可以保证应用基础环境的一致,当然方法是多种多样,今天我就先介绍这种较为折腾的做法,其他做法会在接下来的文章中体现。Ok,进入正题,我们先看看要达到的效果怎么样的:

image

2、既然是要定制一个镜像,自然不能用docker pull这种命令来获取一个现成的docker image,首先我们得选个比较快的OS镜像节点(传送门:http://blog.chinaunix.net/uid-25057421-id-4428048.html),不过我还是比较喜欢openvz的OS镜像(OpenVZ也提供了大量现成的镜像供下载),ok,这里以下载centos6为例子:

wget http://download.openvz.org/template/precreated/centos-7-x86_64.tar.gz

3、接下来,我们需要将下载的os镜像tar镜像导入,我们需要用到这个命令docker import

 

sudo cat centos-6-x86_64.tar.gz |docker import - vmcloud/centos:7

 

4、接着我们根据前面几章所学创建Container01、Container02,由于我们在做镜像时并没有预先集成/bin/bash所以如果直接用docker run会提示缺少命令,这时我们需要使用以下命令创建:

sudo docker run -itd --name=con01 vmcloud/centos:6 /bin/bash

sudo docker run -itd --name=con02 vmcloud/centos:6 /bin/bash

5、接着我们进去c01去安装ssh与mysql:

docker exec -ti con01 /bin/bash

6、接着我们进去c02去安装apache与php:

docker exec -ti con02 /bin/bash

7、现在我们把con01、con02通过commit命令提交为固定镜像,名称为vmcloud_mysql_ssh:1于vmcloud_apache_php:1:

image

8、这样就通过源os镜像的方法去定制了自已的镜像,现在我们来测试下,我们用vmcloud_mysql_ssh创建一个Container并映射22、3306,为了后期监控及主机性能考虑,这里会用到两个新的参数,一个是-hostname,另外一个是-m,具体什么作用,后面的博文会介绍到:

image

9、将8022、8060在Azure上做映射,然后看看我们是否能够通过8022 ssh到我们所创建的容器里(请注意,开放ssh实际上并不推荐这么做,不过为了日后与system center整合,这里需要到,仅供评估):

image

PS:这里发现一个问题,在Container里设置了chkconfig后的服务并不会随着Container的启动而启动,这里是个小坑,将在以后学习docker的步伐中去慢慢摸索如何解决。

相关文章:

  • vue ----自定义指令Vue.directive(),实现拖拽
  • Scalaz(14)- Monad:函数组合-Kleisli to Reader
  • 微软以白金会员加入 OpenChain 开源组织
  • 数学公式
  • 彻底搞懂浏览器Event-loop
  • jQuery插件 -- Cookie插件jquery.cookie.js(转)
  • Hbulider MUI
  • 快速有效的增加App真实评论的简单方法!
  • Spring Cloud 入门教程5、服务容错监控:Hystrix Dashboard
  • rabbitmq单机多实例集群搭建
  • j2EE监听器-listener
  • jQuery EasyUI使用教程之使用虚拟滚动视图显示海量数据
  • DevOps团队结构类型汇总:总有一款适合你
  • CSS学习笔记(五)背景
  • 独家!支付宝小程序技术架构全解析
  • Angular 响应式表单之下拉框
  • CentOS7简单部署NFS
  • classpath对获取配置文件的影响
  • HTML-表单
  • Javascript 原型链
  • Java的Interrupt与线程中断
  • Laravel Mix运行时关于es2015报错解决方案
  • Laravel 菜鸟晋级之路
  • magento 货币换算
  • Mysql优化
  • Otto开发初探——微服务依赖管理新利器
  • python_bomb----数据类型总结
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 创建一种深思熟虑的文化
  • 服务器从安装到部署全过程(二)
  • 排序(1):冒泡排序
  • 微信小程序开发问题汇总
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 昨天1024程序员节,我故意写了个死循环~
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #Ubuntu(修改root信息)
  • #每天一道面试题# 什么是MySQL的回表查询
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (arch)linux 转换文件编码格式
  • (javascript)再说document.body.scrollTop的使用问题
  • (第二周)效能测试
  • (剑指Offer)面试题34:丑数
  • .Net Core与存储过程(一)
  • .NET企业级应用架构设计系列之应用服务器
  • .sh
  • @angular/cli项目构建--Dynamic.Form
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [4.9福建四校联考]
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Android Pro] AndroidX重构和映射
  • [Android学习笔记]ScrollView的使用
  • [BUUCTF]-Reverse:reverse3解析