虚拟机自定义镜像(Image)是一个很有用的功能,可以在一台虚拟机上配置好基本的系统环境,然后做个镜像,以后创建虚拟机直接从这个镜像创建,会省掉很多重复的配置工作。

阿里云与UCloud都有这个功能,Azure当然也少不了,这也是云服务商标配的免费服务。

下面我们分享一下我们在Azure中试用“制作虚拟机自定义镜像”功能的经历。

(一)准备工作

创建一台原装虚拟机,假设名叫blogserver1。创建好之后,登录进去进行基本部署环境的配置,比如安装IIS并进行相关配置(支持高并发的IIS Web服务器常用设置)。

(二)在不看任何帮助文档的情况下凭使用直觉进行操作

1、进入VIRTUAL MACHINES -> IMAGES,点击CREATE;输入IMAGE NAME,选择之前创建的blogserver1虚拟机的VHD URL,选中“I have run Sysprep on the virtual machine associated with this VHD.”(见下图)

2、点击Ok按钮。。。创建失败,错误信息如下:

VHD http://..../vhds/blogserver-blogserver1-2013-09-11.vhd 已作为 ID 为 blogserver1-blogserver1-0-201309110319510234 的资源注册到映像存储库。

错误提示信息让人不知所措。

关闭blogserver1虚拟机进行操作,也是同样的错误。

几经折腾无果,放弃。

(三) 在帮助文档下进行操作

帮助文档来自How to Capture an Image of a Virtual Machine Running Windows Server

1、远程桌面登录至虚拟机,进入 C:\Windows\System32\Sysprep\ 目录,运行sysprep.exe,选中Generalize,选择Shutdown(见下图)。

2、点击Ok之后,进行Sysprep操作(见下图)。。。过了一会,远程桌面失去了连接。

3、等了大约20分钟左右(由于没有进度指示,这个等待过程有点难受),在Azure管理控制台看到blogserver1的状态由于Running变为Stopped。

4、这时虚拟机管理控制台的CAPTURE按钮变亮,点击一下,出现如下的画面:

5、指定IMAGE NAME为webserver,选中“I have run Sysprep on the virtual machine”,然后看到IMPORTANT NOTE:

The virtual machine will be deleted when the image is captured.

由于上午发了一篇不专业的临时工水准的随笔——云计算之路-试用Azure:每一次删除都让人如此心惊,才知道了删除虚拟机的真相,现在就可以坦然面对了。

6、片刻工夫,虚拟机创建完毕。

7、从这个名为webserver自定义镜像创建虚拟机blogserver2。

8、创建成功

(三)恢复原装虚拟机blogserver1

用于制作镜像的blogserver1虚拟机在创建镜像时被删除了,现在通过“CREATE A VIRTUAL MACHINE from MY DISKS”把它恢复起来。

当blogserver1虚拟机正常运行之后,用远程桌面进行登录,结果怎么登录也登录不上,每次都提示用户名/密码错误。为了避免再次发临时工水准的文章,经过了多次确认,确认用户名/密码没有错。难道在制作镜像进行Sysprep的过程中,Windows管理员帐户的密码被重置了?而我们无法验证这一点,因为在Azure中无法重置虚拟机的管理员密码。只能让这台虚拟机报废。

(四)试用感言

我们设想的制作虚拟机自定义镜像的功能应该是这样的:选择一台虚拟机,点击“制作镜像”,然后去一下洗手间,回来之后“镜像”就创建好了。

创建镜像竟然把运行中的原装虚拟机给删除了,恢复之后还连不上,也就是说虚拟机要为制作镜像“献身”。在阿里云没遇到过,在UCloud也没碰到过,只有Azure,而且在阿里云/UCloud中制作镜像时对当前这台正常运行的虚拟机没有任何影响。Azure在这个功能的设计上需要改进。

另外,我们的Azure试用系列博文只是表达我们试用时的真正感受,并没有说我们的试用是专业的。微软也没有说Azure只适合专业人员用,不适合临时工用。作为一名用户,发现问题就吐槽,也不为过。好的产品不是赞美出来的,而是在解决用户各种刁钻的问题中成长出来的。

最新文章

  1. HDU 1166 敌兵布阵(线段树单点更新)
  2. Linux交叉开发环境搭建 —— 效率之源
  3. Ubuntu 16.04 设置MySQL远程访问权限
  4. win10 uwp 读取文本GBK错误
  5. [Swift-2019力扣杯春季初赛]2. 校园自行车分配
  6. HSV色彩空间和颜色分量范围
  7. 蓝牙协议分析(5)_BLE广播通信相关的技术分析
  8. ROS分布式控制的节点配置
  9. LeetCode 搜索二维矩阵 II
  10. system v 共享内存
  11. Windows:chm 文件打开出现“已取消到该网页的导航”的解决方案
  12. SpringBoot数据库访问(一)--------关系型数据库访问(RDBMS)
  13. Fork me on GitHub
  14. [ActionScript3.0] 使用FileReferenceList处理多个文件上载
  15. linux安装redis+RedisDesktopManager
  16. java版两人聊天程序
  17. Xtrareport 多栏报表
  18. PHP.20-图片上传下载
  19. Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器
  20. 快速排序php

热门文章

  1. Java之static理解
  2. 将对象转换为JSON字符串
  3. 大数据技术之_16_Scala学习_05_面向对象编程-中级
  4. scrapy抓取拉勾网职位信息(三)——爬虫rules内容编写
  5. js数组,在遍历中删除元素
  6. C++中的error C2662,const的this指针问题
  7. 【BZOJ 2791】 2791: [Poi2012]Rendezvous (环套树、树链剖分LCA)
  8. codevs 1014 装箱问题 2001年NOIP全国联赛普及组
  9. 【并查集】Gym - 101128B - Black Vienna
  10. Spring的Bean生命周期理解