在 Azure 中创建通用 VM 的托管映像
可以从在存储帐户中存储为托管磁盘或非托管磁盘的通用 VM 中创建托管映像资源。 然后可以使用该映像创建多个 VM。
使用 Sysprep 通用化 Windows VM
Sysprep 将删除所有个人帐户信息及其他某些数据,并准备好要用作映像的计算机。 有关 Sysprep 的详细信息,请参阅如何使用 Sysprep:简介。
确保 Sysprep 支持计算机上运行的服务器角色。 有关详细信息,请参阅 Sysprep Support for Server Roles
Important
如果在首次将 VHD 上传到 Azure 之前运行 Sysprep,请确保先准备好 VM,然后再运行 Sysprep。
- 登录到 Windows 虚拟机。
- 以管理员身份打开“命令提示符”窗口。 将目录切换到 %windir%\system32\sysprep,然后运行
sysprep.exe。 - 在“系统准备工具”对话框中,选择“进入系统全新体验(OOBE)”,确保已选中“通用化”复选框。
- 在“关机选项”中选择“关机”。
单击 “确定”。

- 在 Sysprep 完成时,它会关闭虚拟机。 请勿重启 VM。
在门户中创建托管映像
- 打开 门户。
- 在左侧菜单中,单击“虚拟机”,然后从列表中选择 VM。
- 在 VM 页的上部菜单中,单击“捕获”。
- 在“名称”中,键入想要用于映像的名称。
- 在“资源组”中,选择“新建”或键入名称,或选择“使用现有”并从下拉列表中选择要使用的资源组。
- 如果想要在创建映像后删除源 VM,选择“创建映像后自动删除此虚拟机”。
- 完成后,单击“创建”。
- 创建映像后,在资源组的资源列表中,你会看到它作为“映像”资源而出现。
使用 PowerShell 创建 VM 映像
直接从 VM 创建映像可确保映像中包含与 VM 关联的所有磁盘,包括 OS 磁盘和任何数据磁盘。 本示例演示如何从使用托管磁盘的 VM 创建托管映像。
在开始之前,请确保有最新版本的 AzureRM.Compute PowerShell 模块。 运行以下命令来安装该模块。
Install-Module AzureRM.Compute -RequiredVersion 2.6.0
有关详细信息,请参阅 Azure PowerShell 版本控制。
- 创建一些变量。
powershell $vmName = "myVM" $rgName = "myResourceGroup" $location = "ChinaEast" $imageName = "myImage" 确保 VM 已解除分配。
PowerShell复制Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
将虚拟机的状态设置为“通用化”。
PowerShell复制Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized
获取虚拟机。
PowerShell复制$vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $rgName
创建映像配置。
PowerShell复制$image = New-AzureRmImageConfig -Location $location -SourceVirtualMachineId $vm.ID
创建映像。
PowerShell复制New-AzureRmImage -Image $image -ImageName $imageName -ResourceGroupName $rgName
使用 PowerShell 从托管磁盘创建映像
如果你只想创建 OS 磁盘的映像,还可通过将托管磁盘 ID 指定为 OS 磁盘来创建映像。
创建一些变量。
PowerShell复制$vmName = "myVM"
$rgName = "myResourceGroup"
$location = "ChinaEast"
$snapshotName = "mySnapshot"
$imageName = "myImage"
获取 VM。
PowerShell复制$vm = Get-AzureRmVm -Name myVM -ResourceGroupName $rgName
获取托管磁盘的 ID。
PowerShell复制$diskID = $vm.StorageProfile.OsDisk.ManagedDisk.Id
创建映像配置。
Azure PowerShell复制试用$imageConfig = New-AzureRmImageConfig -Location $location
$imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -ManagedDiskId $diskID
创建映像。
PowerShell复制New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
使用 PowerShell 从快照创建映像
可以从通用 VM 的快照创建托管映像。
创建一些变量。
PowerShell复制$rgName = "myResourceGroup"
$location = "ChinaEast"
$snapshotName = "mySnapshot"
$imageName = "myImage"
获取快照。
PowerShell复制$snapshot = Get-AzureRmSnapshot -ResourceGroupName $rgName -SnapshotName $snapshotName
创建映像配置。
PowerShell复制$imageConfig = New-AzureRmImageConfig -Location $location
$imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -SnapshotId $snapshot.Id
创建映像。
PowerShell复制New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
从存储帐户中的 VHD 创建映像
从存储帐户中的通用 OS VHD 创建托管映像。 需要存储帐户中 VHD 的 URI,其格式为 https://mystorageaccount.blob.core.chinacloudapi.cn/container/vhd_filename.vhd。 在本示例中,使用的 VHD 位于名为 vhdcontainer 的容器中的 mystorageaccount 中,且 VHD 文件名为 osdisk.vhd。
首先,设置公共参数:
PowerShell复制$vmName = "myVM"
$rgName = "myResourceGroup"
$location = "ChinaEast"
$imageName = "myImage"
$osVhdUri = "https://mystorageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd"
停止\解除分配 VM。
PowerShell复制Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
将 VM 标记为通用。
PowerShell复制Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized
使用通用 OS VHD 创建映像。
PowerShell复制$imageConfig = New-AzureRmImageConfig -Location $location
$imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $osVhdUri
$image = New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
后续步骤
- 现在,可以从通用托管映像创建 VM。
立即访问http://market.azure.cn
在 Azure 中创建通用 VM 的托管映像的更多相关文章
- 上传通用化 VHD 并使用它在 Azure 中创建新 VM
本主题逐步讲解如何使用 PowerShell 将通用化 VM 的 VHD 上传到 Azure.从该 VHD 创建映像,然后从该映像创建新 VM. 可以上传从本地虚拟化工具或其他云导出的 VHD. 对新 ...
- 排查在 Azure 中创建、重启 Windows VM 或调整其大小时发生的分配失败
创建 VM.重新启动已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配 ...
- 排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障
创建 VM.重启已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配故障 ...
- 在 Azure 中的 Linux VM 上创建 MongoDB、Express、AngularJS 和 Node.js (MEAN) 堆栈
本教程介绍如何在 Azure 中的 Linux VM 上实现 MongoDB.Express.AngularJS 和 Node.js (MEAN) 堆栈. 通过创建的 MEAN 堆栈,可以在数据库中添 ...
- 排查在 Azure 中新建 Windows VM 时遇到的部署问题
尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. 当由于准备步骤不当,或者在从门户捕获映像期间选择了错误的设置而导致 OS 映像无法加载时,将发生预配失败. 当群集 ...
- 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题
本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...
- 排查在 Azure 中创建新 Linux 虚拟机时遇到的 Resource Manager 部署问题
本文内容 常见问题 收集活动日志 问题:自定义映像:预配错误 问题:自定义/库/应用商店映像:分配失败 后续步骤 尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. ...
- 如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构
若要将应用程序开发的生成和测试阶段自动化,可以使用持续集成和部署 (CI/CD) 管道. 本教程介绍如何在 Azure VM 上创建 CI/CD 管道,包括如何: 创建 Jenkins VM 安装并配 ...
- 如何使用 Packer 在 Azure 中创建 Windows 虚拟机映像
Azure 中的每个虚拟机 (VM) 都是基于定义 Windows 分发和操作系统版本的映像创建的. 映像可以包括预安装的应用程序和配置. Azure 应用商店为最常见的操作系统和应用程序环境提供了许 ...
随机推荐
- 深入聊聊Java多线程
一.背景 在没有学习Java多线程以前,总觉得多线程是个很神秘的东西,只有那些大神才能驾驭,新年假期没事就来学习和了解一下Java的多线程,本篇博客我们就来从头说一下多线程到底是怎么回事. 二.概述 ...
- Jni如何传递并且修改两个基础参数
最近在开发jni时,需要返回多个参数给java.这个过程中,碰到了一些问题,值得探讨一下. 具体是这样,jni方法jni_do_something作了底层处理后,得出两个int数据,需要将他们的值 ...
- js类的继承
1.类式继承 首先要做的是创建构造函数.按惯例,其名称就是类名,首字母应该大写.在构造函数中,创建实例属性要用关键字this .类的方法则被添加到prototype对象中.要创建该类的实例,只需结合关 ...
- ajax 拼接html标签 thinkphp
ajax 拼接html标签 thinkphp框架 一.html部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional ...
- [javaSE] 看博客学习多线程的创建方式和优劣比较和PHP多线程
通过实现Runnable接口创建线程 获取Thread对象,new出来,构造函数参数:Runnable对象 Runnable是一个接口,定义一个类MyRunnable实现Runnable接口,实现ru ...
- Java多线程编程之单例模式
延迟加载:“懒汉模式” 延迟加载是指在调用getInstance()方法时创建实例.常见的方法是在getInstance()方法中实例化new.实现代码如下: 但是因为getInstance()中有多 ...
- java项目运用server运行(eclipse、myeclipse通用)
右键点击”new“选择“Other”,打开选项 勾选”Show All Wizards“ 然后在搜索处输入server,选择server,点击next 刚进来时此处都是空的,点击Configure r ...
- 记一次SQL注入实战
刚发现漏洞时,我就已经成功实现了注入,因为怕发到网上后被玩坏,一直没有发布.今天去看了看,原网页已经无法访问了,现在发出来应该就没有什么大问题了. 本文仅供学习交流,目的是为了构建更加安全的网络环境! ...
- 使用Spring的AbstractRoutingDataSource类来进行拓展多数据源
1.继承抽象类AbstractRoutingDataSource 通过重写这个抽象类的determineCurrentLookupKey()方法来决定返回哪个数据库. 2.配置多个数据库 <be ...
- EF数据库优先模式(三)
今天2018年4月1日,呼叫王伟,81192,收到请返航! 接上次说,本节将LINQ以及lambda表达式 LINQ是C#里面针对SQL Server特有的数据访问操作方法,通俗一点说就是类似于写SQ ...