自定义映像类似于应用商店映像,不同的是自定义映像的创建者是你自己。 自定义映像可用于启动配置,例如预加载应用程序、应用程序配置和其他 OS 配置。 在本教程中,你将创建自己的 Azure 虚拟机自定义映像。 你将学习如何执行以下操作:

  • 取消预配和通用化 VM
  • 创建自定义映像
  • 从自定义映像创建 VM
  • 列出订阅中的所有映像
  • 删除映像

Note

在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud

如果选择在本地安装并使用 CLI,本教程要求运行 Azure CLI 2.0.4 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI 2.0

开始之前

下列步骤详细说明了如何将现有 VM 转换为可重用自定义映像,用于创建新的 VM 实例。

若要完成本教程中的示例,必须现有一个虚拟机。 如果需要,此脚本示例可为你创建一个虚拟机。 按照教程进行操作时,请根据需要替换资源组和 VM 名称。

创建自定义映像

若要创建虚拟机的映像,需通过以下方式准备 VM:取消源 VM 的预配,解除其分配,然后将其标记为通用化。 准备好 VM 后,可以创建映像。

取消预配 VM

取消预配可通过删除特定于计算机的信息来通用化 VM。 实现此通用化后,即可从单个映像部署多个 VM。 在取消预配期间,主机名将重置为“localhost.localdomain”。 还会删除 SSH 主机密钥、名称服务器配置、根密码和缓存的 DHCP 租约。

若要取消预配 VM,请使用 Azure VM 代理 (waagent)。 Azure VM 代理安装在 VM 上,用于管理预配及其与 Azure 结构控制器的交互。 有关详细信息,请参阅 Azure Linux 代理用户指南

使用 SSH 连接到 VM 并运行命令以取消预配 VM。 使用 +user 参数还会删除上次预配的用户帐户以及任何关联的数据。 将示例 IP 地址替换为 VM 的公共 IP 地址。

通过 SSH 连接到 VM。

bash复制
ssh azureuser@52.174.34.95

取消预配 VM。

bash复制
sudo waagent -deprovision+user -force

关闭 SSH 会话。

bash复制
exit

解除分配 VM 并将其标记为通用化

若要创建映像,需要解除分配 VM。 使用 az vm deallocate 解除分配 VM。

Azure CLI复制
az vm deallocate --resource-group myResourceGroup --name myVM

最后,使用 az vm generalize 将 VM 的状态设置为“通用化”,以便 Azure 平台知道 VM 已通用化。 只能从通用化 VM 创建映像。

Azure CLI复制
az vm generalize --resource-group myResourceGroup --name myVM

创建映像

现在,可使用 az image create 创建 VM 的映像。 以下示例从名为 myVM 的 VM 创建名为 myImage 的映像。

Azure CLI复制
az image create \
--resource-group myResourceGroup \
--name myImage \
--source myVM

从映像创建 VM

现在,你已有了一个映像,可以使用 az vm create 从该映像创建一个或多个新 VM。 以下示例从名为 myImage 的映像创建名为 myVMfromImage 的 VM。

Azure CLI复制
az vm create \
--resource-group myResourceGroup \
--name myVMfromImage \
--image myImage \
--admin-username azureuser \
--generate-ssh-keys

映像管理

下面是一些常见映像管理任务的示例,说明了如何使用 Azure CLI 完成这些任务。

以表格格式按名称列出所有映像。

Azure CLI复制
az image list \
--resource-group myResourceGroup

删除映像。 此示例将从 myResourceGroup 中删除名为 myOldImage 的映像。

Azure CLI复制
az image delete \
--name myOldImage \
--resource-group myResourceGroup

后续步骤

在本教程中,你已创建了一个自定义 VM 映像。 你已了解如何:

  • 取消预配和通用化 VM
  • 创建自定义映像
  • 从自定义映像创建 VM
  • 列出订阅中的所有映像
  • 删除映像

请转到下一教程,了解高度可用的虚拟机。

创建高度可用的 VM

立即访问http://market.azure.cn

使用 CLI 创建 Azure VM 的自定义映像的更多相关文章

  1. 使用 PowerShell 创建 Azure VM 的自定义映像

    自定义映像类似于应用商店映像,不同的是自定义映像的创建者是你自己. 自定义映像可用于启动配置,例如预加载应用程序.应用程序配置和其他 OS 配置. 在本教程中,你将创建自己的 Azure 虚拟机自定义 ...

  2. 在Azure China用自定义镜像创建Azure VM Scale Set

    在Azure China用自定义镜像创建Azure VM Scale Set 在此感谢世纪互联的工程师Johnny Lee和Lan,你们给了我很大的帮助.因为Azure China的官网没有给出完整的 ...

  3. 在 Azure 中创建通用 VM 的托管映像

    可以从在存储帐户中存储为托管磁盘或非托管磁盘的通用 VM 中创建托管映像资源. 然后可以使用该映像创建多个 VM. 使用 Sysprep 通用化 Windows VM Sysprep 将删除所有个人帐 ...

  4. 【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)

    在参考Azure官方文档进行VM创建时,发现其中没有包含如何设置NSG的内容,以及如何在创建时就添加数据磁盘的代码(设置磁盘为SSD类型).本文的内容以"使用 Java 创建和管理 Azur ...

  5. 订阅无法在 ARM 模式下创建虚拟机,只能在 ASM 模式下创建 Azure VM 部署

    问题描述 资源组所有者可以在新版 portal 创建经典模式的虚拟机,但是无法创建 ARM 模式的虚拟机. 问题现象 环境中有个相对权限比较高的账户,比如 account admin (以下简称为 A ...

  6. 使用 Azure CLI 2.0 从自定义磁盘创建 Linux VM

    本文说明如何在 Azure 中上传自定义的虚拟硬盘 (VHD) 或复制现有 VHD,并从自定义磁盘创建 Linux 虚拟机 (VM). 可以根据要求安装并配置 Linux 分发版,并使用该 VHD 快 ...

  7. 在 Azure VM 中使用应用商店映像创建 HPC Pack 群集的头节点

    使用 Azure 应用商店和 Azure 门户中的 Microsoft HPC Pack 2012 R2 虚拟机映像创建 HPC 群集的头节点. 此 HPC Pack VM 映像基于预安装了 HPC ...

  8. Windows Azure Virtual Machine 之用程序控制Azure VM

    我们在很多时候可能会需要用程序来控制VM的创建,删除工作. 而在这些工作之中,用程序创建一个VM将会是一个非常复杂的过程,因为他涉及到很多步骤. 具体步骤如下 1 创建一个Hosted cloud s ...

  9. [New Portal]Windows Azure Virtual Machine (16) 使用Azure PowerShell创建Azure Virtual Machine

    <Windows Azure Platform 系列文章目录> 注:本章内容和之前的[New Portal]Windows Azure Virtual Machine (12) 在本地制作 ...

随机推荐

  1. Android 开发工具类 01_AppUtils

    1.获取应用程序名称: 2.获取应用程序版本信息. import android.content.Context; import android.content.pm.PackageInfo; imp ...

  2. switch开关

    1.开关按钮 效果如下图 2.css代码 .form-switch{ display: inline-block; } .form-switch input[type="checkbox&q ...

  3. mongodb与关系型数据库优缺点比较

    1.与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度②文档结构的存储方式,能够更便捷的获取数据③内置GridFS,支持大容量的存储.④内置Sharding.⑤第 ...

  4. java学习-get和post请求

    摘要 看完本文可以知道,使用java原生编写get/post请求的步骤,进行网络请求时应该注意的地方. 这里使用java自带的HttpUrlConnection对象进行网络请求, 请求步骤大致分为五步 ...

  5. Centos 安装python3

    安装python3 大多数云平台没有安装zlib和openssl的devel包,需要提前安装   下载python源码 cd /home/cheat wget https://www.python.o ...

  6. OOAD之单例模式Singleton的6种写法

    1  主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 一 :第一种 饿汉式(预加载) public class Singleton { private Singleton(){ ...

  7. 关于 centos 7系统,iptables透明网桥实现

    首先建立网桥:(使用bridge)    示例 桥接eth0 与 eth1 网口 /sbin/modprobe bridge /usr/sbin/brctl addbr br0 /sbin/ifup ...

  8. [CTSC 2018]假面

    Description 题库链接 有 \(n\) 个敌方单位,初始第 \(i\) 个单位的血量为 \(m_i\) .共 \(Q\) 次操作,分两种: 对某一个单位以 \(p\) 的概率造成 \(1\) ...

  9. django2.1---上下文处理器

    上下文处理器 上下文处理器是可以返回一些数据,在全局模板中都可以使用.比如登录后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象. 在set ...

  10. [日常] MySQL的预处理技术测试

    MySQL预处理技术:1.减轻服务器压力2.防止sql注入,把传递过去的危险字符也只当做参数处理3.将sql语句强制一分为二:第一部分为前面相同的命令和结构部分,第二部分为后面可变的数据部分基本使用 ...