从本机构建Linux应用程序VHD映像
2016-07-25 11:26
489 查看
下图描述了总体的虚拟机映像的VHD生成,上传以及发布到 Azure 镜像市场的全过程:
具体步骤如下:
在本地计算机(Windows平台)上安装Hyper-V,并安装您所需要的虚拟机操作系统
在此操作系统上安装和配置您要发布的应用软件产品
在本地计算机上制作VHD为映像
将制作好的VHD通过PowerShell上传到Azure存储账号上,并获取VHD映像在Azure上的存储位置(url地址)
申请预发布环境,将第四步中Azure上的VHD映像部署到测试发布环境进行验证
正式发布,登录到Azure 镜像市场,并根据发布流程将已经测试完毕的VHD发布到 Azure Azure 镜像市场
第一步:准备
检查操作系统版本兼容性
如操作系统为Linux,请确认所安装的Linux系统版本是Azure所支持的,具体请参考:Azure支持的Linux版本
本机安装Hyper-V
确认Hyper-V在您的Windows系统中安装并可以使用。
关于Hyper-V在各版本Windows上的安装和配置,请参考: 安装Hyper-V并创建虚拟机
本机安装了PowerShell命令行工具
获取Azure的配置文件(过程中需要输入azure的账号密码),并保存到磁盘。
Get-AzurePublishSettingsFile –Environment azurechinacloud
导入账户认证信息,路径用引号(为上一步骤中的配置文件路径)。
Import-AzurePublishSettingsFile <PathToFile>
第一步完成后,即可开始制作映像,制作VHD主要包括两种方式,第一种是通过本地Hyper-V虚拟机建立VHD,第二种是直接在Azure制作VHD。以下以本地建立VHD为例进行介绍:
第二步:从本机制作Linux应用程序VHD映像
本节我们以CentOS6.x为例进行介绍,其他Linux操作系统的VHD制作可参考官方文档:制作和上载Linux虚拟机vhd。
安装CentOS 6.5 Linux虚拟机和应用软件
您需要通过Hyper-V安装Linux虚拟机。注意在安装过程中,一定要选择后续应用软件所需要的各个组件,比如c/c++编译器或cmake或KDE图形界面等,虚拟机安装完成后需要进行系统设置使得Linux可以连接外网。
Linux虚拟机安装完毕后,继续安装和配置应用软件。
网络和网卡配置
a)卸载NetworkManager(这个软件包一般Linux没有装)
# sudo rpm -e --nodeps NetworkManager
b)编辑文件/etc/sysconfig/network如下:
NETWORKING=yes OSTNAME=localhost.localdomain
c)编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
d)修改udev防止以太网接口生成固定规则,在Azure平台上克隆虚拟机的时候,这些规则可能导致问题。
# sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules # sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
e)确保系统在启动的时候网络服务正常:
# sudo chkconfig network on
对于CentOS 6.3或早期版本,安装驱动Linux Integration Services (LIS),在CentOS 6.4+ 以上版本跳过此步骤
下载如下软件包,并通过rpm进行安装:LIS download page
安装软件包python-pyasn1,后面的WALinuxAgent依赖于此
# sudo yum install python-pyasn1
修改yum相关配置,为安装WaLinuxAgent做准备
a)编辑yum配置文件/etc/yum.repos.d/CentOS-Base.repo
[openlogic] name=CentOS-$releasever - openlogic packages for $basearch baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/ enabled=1 gpgcheck=0 [base] name=CentOS-$releasever - Base baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #released updates [updates] name=CentOS-$releasever - Updates baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
b)配置/etc/yum.conf
http_caching=packages
另外,CentOS 6.3需要增加如下行:
exclude=kernel*
c)编辑/etc/yum/pluginconf.d/fastestmirror.conf, 使得yum模块"fastestmirror"无效
在[main]一节, 设置
set enabled=0
d)清空现有的yum源数据
# yum clean all
e)对于CentOS 6.3, 更新内核:
# sudo yum --disableexcludes=all install kernel
f)在grub配置中为Azure修改内核启动参数,打开"/boot/grub/menu.lst",增加:
console=ttyS0 earlyprintk=ttyS0 rootdelay=300 numa=off
建议去掉以下参数:
rhgb quiet crashkernel=auto
通过yum安装WaLinuxAgent
a)安装Azure Linux Agent
# sudo yum install WALinuxAgent
b)打开配置文件/etc/waagent.conf如下修改:
ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048` ## NOTE:此项根据你的需要设置
c)运行如下命令,你将不能再启动此虚拟机,直到它部署在Azure上运行。
# sudo waagent -force -deprovision # export HISTSIZE=0 # logout
在Hyper-v中关闭Linux,Linux VHD文件已经制作好并可以上传到Azure。
第三步:将VHD上传至Azure
用PowerShell将VHD文件上传到Azure
假设上传的文件是myvhd.vhd,上传存储空间是mystorage,容器是mycontainer
在Azure管理平台上建立存储位置。
假设我们的目标是将VHD文件放置到Azure上的存储空间mystorage中的容器mycontainer中,位置为myurl。
进入Azure管理平台,建立存储空间mystorage并在其下面建立容器mycontainer,然后拷贝这个容器的url位置,注意容器的属性一定要设置为“公共blob”属性,只有“公共blob”属性中的VHD映像才能够被发布到Azure 镜像市场。
将本地的VHD文件上传至Azure的指定位置。打开PowerShell,在PowerShell中输入如下指令。
Add-AzureVhd [[-NumberOfUploaderThreads] [<Int32>]] -Destination <BlobStorageURL>/<YourImagesFolder>/<VHDName> -LocalFilePath <PathToVHDFile>
例如:
Add-AzureVhd -NumberOfUploaderThreads 5 -Destination https://mystorage.blob.core.chinacloudapi.cn/mycontainer/myvhd.vhd -LocalFilePath D:\Mydir\Hyper-V\myvhds\myvhd.vhd
点击“虚拟机”-“映像”-“创建”,然后选择刚才上传的vhd创建映像。至此,您已经成功完成了映像的制作和上传。下一步,便可以发布映像到 Azure 镜像市场。
相关文章推荐
- 从Azure上构建Linux应用程序映像
- 几个Linux命令
- linux 内核内存池--mempool
- 在linux上用dd命令实现ghost功能
- CentOS7修改yum阿里源
- 在linux 列出 超级用户 普通用户和 系统用户
- linux下查看动态链接库so文件的依赖的相关组建
- linux 查看 *.a *.so 符号表(zt)
- Linux日志分析的实战专题
- 杀死Linux下顽固的僵尸进程
- LINUX flock 控制异步执行
- golang开发环境配置(Linux)
- linux 路由
- Linux下安装软件的一般步骤
- VMware Workstation安装Linux
- linux入门基础
- linux下查看动态链接库依赖关系的命令 x86: ldd *.so arm: arm-linux-readelf -d *.so 实际例子: 以项目中用到的库librtsp.so分析: lijun@ubuntu:~/workspace$ arm-hisiv100nptl-linux-ld -d librtsp.so arm-hisiv100nptl-linux-ld:
- Linux 下配置Tinyxml,将其编译为静态库
- Linux定时任务
- Linux查看系统配置常用命令