从阿里云命令行启动虚拟机实例(可选)
此流程和本节中的代码片段适用于Linux或Mac OS X。如果您使用Windows,则可以使用Windows的Linux子 系统 并使用bash shell(在Ubuntu Linux中)。
同时,NVIDIA在https://github.com/NVIDIA/ngc-examples/tree/master/ncsp 上提供了一套通过阿里云CLI自动配置环境的脚本示例,可以供大家下载参考。
准备环境
安装阿里云命令行工具
$ sudo pip install aliyuncli
命令行工具需要与阿里云各产品的 SDK 协同工作。为方便用户使用,在线安装命令行工具时,与阿里云 SDK 的安装进行了分离。您可以自由选择所需产品的 SDK,不必下载所有的阿里云 SDK。这里我们需要使用ECS(Elastic Compute Service)工具集。
$ sudo pip install aliyun-python-sdk-ecs
更详细的安装步骤请参考阿里云在线安装命令行工具步骤: https://www.alibabacloud.com/help/zh/doc-detail/29995.htm。
安装完成后,可以使用aliyuncli ecs help,可以看到有超过200个命令:
aliyuncli ecs help usage: aliyuncli <command> <operation> [options and parameters] [ecs] valid operations as follows: ActivateRouterInterface | AddBandwidthPackageIps AddIpRange | AddTags AllocateEipAddress | AllocatePublicIpAddress ...
配置阿里云命令行工具
$ sudo aliyuncli configure Aliyun Access Key ID [None]: <输入 Access Key ID> Aliyun Access Key Secret [None]: <输入 Access Key Secret> Default Region Id [None]: <输入您购买的阿里云产品的 Region Id> Default output format [None]: <输入您需要的输出格式>
更详细的配置修改步骤请参考阿里云帮助文档:
https://www.alibabacloud.com/help/zh/doc-detail/43039.htm 。
创建安全组
需要为您的实例创建一个安全组
sudo aliyuncli ecs CreateSecurityGroup --RegionId cn-beijing --SecurityGroupName "NVSG"
如果执行成功,会返回新创建组的SecurityGroupId(后面会用得到):
{ "SecurityGroupId": "sg-2xxxxxxxx89", "RequestId": "C3F25628-DF77-4F0B-98E2-90xxxxxxDB9" }
对安全组添加规则
一个新的安全组将不会有任何规则。 以下命令将打开入站端口22(用于SSH),443(用于HTTPS)和5000(用于DIGITS 6)
sudo aliyuncli ecs AuthorizeSecurityGroup --RegionId cn-beijing --SecurityGroupId "<your-SecurityGroupId>" --IpProtocol tcp --PortRange 22/22 --SourceCidrIp 0.0.0.0/0 --Policy accept --Description SSH sudo aliyuncli ecs AuthorizeSecurityGroup --RegionId cn-beijing --SecurityGroupId "<your-SecurityGroupId>" --IpProtocol tcp --PortRange 443/443 --SourceCidrIp 0.0.0.0/0 --Policy accept --Description HTTPS sudo aliyuncli ecs AuthorizeSecurityGroup --RegionId cn-beijing --SecurityGroupId "<your-SecurityGroupId>" --IpProtocol tcp --PortRange 5000/5000 --SourceCidrIp 0.0.0.0/0 --Policy accept --Description DIGITS6
以下命令将打开所有出站端口:
aliyuncli ecs AuthorizeSecurityGroupEgress --RegionId cn-beijing --SecurityGroupId "<your-SecurityGroupId>" --IpProtocol all --PortRange -1/-1 --DestCidrIp 0.0.0.0/0 --Policy accept --Description "All open!"
生成SSH密钥对
建议使用SSH密钥对进行登录验证。以下命令将会生成一个:
sudo aliyuncli ecs CreateKeyPair --RegionId cn-beijing --KeyPairName "baseos-alibaba-beijing"
输出会包含有PrivateKeyBody:
{ "KeyPairFingerPrint": "5c93f4ef676af54b86dd7c88f58df052", "PrivateKeyBody": "-----BEGIN RSA PRIVATE KEY-----\nblah\nblah\nblah\nblah\nblah\n-----END RSA PRIVATE KEY-----\n", "RequestId": "3E50FAD2-EF3F-4517-B8C7-7D7877A292FE", "KeyPairName": "baseos-alibaba-beijing" }
把PrivateKeyBody的内容复制到一个.pem文件中(所有的\n用实际的内容替代),修改.pem文件的权限为400. 建议文件命名为”KeyPairName.pem”。
获取 VM的镜像ID
创建实例时,您需要指定一个源ImageId。 使用此命令查找NVIDIA GPU Cloud VM Image的最新ImageId:
$ sudo aliyuncli ecs DescribeImages --RegionId cn-beijing --ImageOwnerAlias marketplace --ImageName "NVIDIA GPU Cloud VM Image 18.03.0" --output json --filter Images.Image[0].ImageId
应当返回一个类似如下的ImageID:
"m-2zeglob57mdv4m1rqu03"
启动虚拟机实例
创建实例
$ sudo aliyuncli ecs CreateInstance \ --RegionId cn-beijing \ --ImageId "m-2zeglob57mdv4m1rqu03" \ --SecurityGroupId "sg-2zexxxxxxx89" \ --InstanceType ecs.gn5-c8g1.2xlarge \ --InstanceName "click-gn5-1gpu" \ --InternetMaxBandwidthOut 10 \ --InstanceChargeType PostPaid \ --KeyPairName baseos-alibaba-beijing
如果创建成功,会返回实例ID(InstanceID):
{ "InstanceId": "i-rj9a0iw25hryafj0fm4v", "RequestId": "440ECC70-09F9-492C-AB9E-21AA9C4E0531" }
建议使用的选项
"--InternetMaxBandwidthOut 10" :设置公网出带宽最大值为10 Mbps,有效的值为 [1, 200]。
"--InstanceChargeType PostPaid" :设置付费方式为现用现付,"PrePaid" 为预付费方式。
其它有用的选项
更多配置选项可参考:https://www.alibabacloud.com/help/doc-detail/25499.htm?spm=a3c0i.o51771en.b99.190.3eb7831cDsO1p3 。
连接到虚拟机实例
通过CLI创建的实例不会自动获得公共IP地址。 要为刚创建的实例分配公有IP地址,请运行:
sudo aliyuncli ecs AllocatePublicIpAddress --RegionId us-west-1 --InstanceId "i-rj9a0iw25hryafj0fm4v"
若执行成功,会返回分配的IP地址:
{ "IpAddress": "39.xxx.xxx.98", "RequestId": "65EB59AE-FA75-446F-B5C7-2BA0F9A77CDC" }
通过CLI创建的实例不会自动启动,请运行如下命令启动实例:
sudo aliyuncli ecs StartInstance --InstanceId "i-rj9a0iw25hryafj0fm4v"
实例启动后,您可以使用SSH密钥以root的身份连入到实例中:
ssh -i baseos-alibaba-beijing.pem root@39.xxx.xxx.98
启动、停止、重启虚拟机实例
停止实例:
aliyuncli ecs StopInstance --InstanceId "i-rj9a0iw25hryafj0fm4v"
启动实例:
aliyuncli ecs StartInstance --InstanceId "i-rj9a0iw25hryafj0fm4v"
重启实例:
aliyuncli ecs RebootInstance --InstanceId "i-rj9a0iw25hryafj0fm4v"