Azure容器实例为在Azure基础设施中快速实施基于容器的图像提供了一个灵活的解决方案。它不需要构建虚拟机、安装Microsoft SQL Server等应用程序或配置软件。你可以从库中选择容器镜像并构建解决方案。你可以使用非持久性(默认)和持久性存储,以避免在你的容器状态改变为停止和重启时丢失容器数据。
在以前的文章中(底部的TOC),我们探讨了以下容器实例部署的方法。
- Azure门户网站
- Azure CLI
- ARM模板
- 使用容器实例的持久化存储部署
本文给大家介绍了使用YAML的Azure容器实例的操作方法。
注意:本文没有对Azure容器实例进行详细的描述或其配置。在继续阅读本文之前,你应该先浏览一下TOC文章。
YAML的介绍
YAML是Yet Another Markup Language的缩写,它是一种数据序列化文件,特别用于配置文件。它是一种用户友好型语言,提供广泛的语言支持。YAML 是一种区分大小写的语言,使用**.yaml** 或 .yml作为文件扩展。它被认为是JSON文件的一个超集。然而,YAML往往比JSON更具可读性。
让我们看看一个基本的YAML文件,以了解YAML的概念。
---
# It is a sample YAML file
name: Mary Smith
age: 27
location: India
- YAML文件以三个破折号(- - -)开始。如果你在YAML文件中包含多个文件,每个文件以三个破折号开始。
- 评论以哈希(#)开始。你必须用空格将注释与其他标记分开。
- YAML由键值对组成。例如,在上面的代码中。
- key: 名称
- 值:值。玛丽-史密斯
- YAML支持多种数据类型,如整数、浮点数、字符串。
- 字符串可以用单引号、双引号或无引号括起来。
- 要使用一个成员列表,请使用前面的连字符(-)。
- 你可以使用一个数组,使用冒号(:)的键值格式。它应该由大括号{}括起来。
- 要指定一个null,使用tilde(~)或未引用的null字符串字面。
- 你可以使用一个管道(|)字符来保留换行符。你可以用它来指定长字符串或多行字符串。
Azure容器实例的YAML配置文件
我们可以通过在YAML配置文件中指定容器配置,在一个容器组中部署多个容器。之前,在文章中。 使用ARM模板在Azure中部署一个容器实例中,我们学习了Azure资源管理器模板,以实现容器部署的自动化。
在本文中,我们将使用部署以下容器。
- Ubuntu上带有SQL Server 2019镜像的Azure容器实例
- SQL服务器镜像:mcr.microsoft.com/mssql/server:2019-CU12-ubuntu-20.04
注意:你可以参考 https://hub.docker.com/_/microsoft-mssql-server 查阅Docker Engine的Microsoft SQL Server on Linux的官方镜像。
为了配合文章,我们有以下要求。
- Azure门户中的Azure Cloud Shell bash环境或
- 本地安装的Azure CLI扩展
- Azure凭证
- Visual Studio Code作为YAML脚本编辑器
注意:你可以从以下网址下载Visual Studio代码的最新版本。 https://code.visualstudio.com/
我们将使用Azure门户中的Azure Cloud Shell bash终端。为此,请登录Azure门户,并点击云外壳图标,如下图所示。
你会在Azure门户中得到以下BASH终端。

用于容器部署的YAML脚本如下。我们可以使用安全字符串作为SQL SA的密码;但是,为了演示,我用简单的文本指定密码。
apiVersion: 2019-12-01
location: eastus
name: securetest
properties:
containers:
- name: mycontainer
properties:
environmentVariables:
- name: 'ACCEPT_EULA'
value: 'Y'
- name: 'MSSQL_SA_PASSWORD'
value: 'India@123'
image: mcr.microsoft.com/mssql/server:2019-CU12-ubuntu-20.04
ports:
- port: 1433
resources:
requests:
cpu: 2
memoryInGB: 2
osType: Linux
restartPolicy: Always
tags: null
type: Microsoft.ContainerInstance/containerGroups
在终端中执行该脚本进行容器部署之前,我们先了解一下该脚本。
- 地点。它是我们要部署资源的Azure区域
- 容器属性。
- 使用键 "name "和值"... "定义环境变量
- 用于SQL Server的azure容器镜像
- 端口。输入用于通信的SQL Server端口号。我们将在本节中使用默认的1433端口。
- 在脚本中为你的容器配置指定CPU和MemoryInGB。
- 操作系统类型。Linux,它应该与我们在脚本中指定的应用程序镜像一致
- 类型。它是Azure容器类型。它的值将是 -Microsoft.CotainerInstance/containerGroups
让我们切换到bash终端。在这里,我们将使用内置的代码编辑器创建一个YAML脚本文件。执行命令代码deploy-aci.yaml ,创建一个空的YAML文件来编写我们的脚本。你可以写你的代码或粘贴上面为容器资源指定的脚本。

保存脚本文件并关闭编辑器。现在,我们已经准备好部署Azure容器实例了。为了执行YAML脚本,我们使用Azure CLI命令--az container create ,并使用容器部署的参数**-file** 。
az container create --resource-group myResourceGroup --file deploy-aci.yaml
你会得到JSON脚本输出,显示Azure容器实例已成功部署。

你可以使用Azure CLI或门户来验证容器。它的状态应该是正在运行,如下图所示。

以YAML格式导出现有的Azure Container Instance
假设你是YAML的初学者,或者有一个具有各种参数和配置的容器实例。在这种情况下,写一个脚本可能是一个耗时且略显困难的任务。因此,我们可以使用逆向工程的方法。
- 使用你的平台选择部署一个Azure容器实例。例如,你可以用以下任何一种方式进行部署。
- Azure门户网站
- Azure CLI
- Azure ARM模板
Azure CLI命令--az container export 可以导出YAML脚本中的容器。你可以修改文件内容,如容器名称、端口、CPU、内存。你可以使用更新的YAML脚本进行进一步的资源部署。
该脚本有以下输入。
- 输出文件格式。指定输出容器的YAML的具体(yaml)格式
- 名称:指定你希望导出的容器的名称
- resource-group:指定资源组的名称
- file: 输入希望导出的yaml脚本文件名。
az container export --output yaml --name myazuresql --resource-group myResourceGroup --file myazuresql.yaml
它导出了指定的Azure容器实例。你可以用 ls命令验证导出的文件,以列出当前目录中可用的文件。

我们可以在Cloud Shell的代码编辑器中打开该文件,也可以在本地系统中下载该文件并进行编辑以获得更好的体验。要下载生成的YAML脚本,请点击图标-上传/下载文件。

在下载文件的提示中,你需要输入完全合格的文件路径。在这种情况下,导出的文件存在于主目录中。因此,输入带有YAML扩展名的文件名,如下图所示。

点击下载,在本地系统的VS Code中打开该文件。

为Azure容器实例导出的脚本如下所示。

在容器部署过程中,你可以通过修改参数值来重新使用这个导出的脚本。例如,我修改了容器名称、DNS名称标签、IP地址。
additional_properties: {}
apiVersion: '2018-10-01'
extended_location: null
identity: null
location: eastus
name: myazuresql1
properties:
containers:
- name: myazuresql1
properties:dns lable, IP address as public.
environmentVariables:
- name: ACCEPT_EULA
value: Y
- name: MSSQL_SA_PASSWORD
value: India@1234
image: mcr.microsoft.com/mssql/server:2019-CU12-ubuntu-20.04
ports:
- port: 1433
protocol: TCP
resources:
requests:
cpu: 2.0
memoryInGB: 2.0
ipAddress:
dnsNameLabel: mysqlazure1
fqdn: mysqlazure.eastus.azurecontainer.io
ip: public
ports:
- port: 1433
protocol: TCP
type: Public
osType: Linux
restartPolicy: Always
tags: {}
type: Microsoft.ContainerInstance/containerGroups
你可以用更新的资源配置替换myazuresql.yaml的内容,或者如前所示创建一个新的YAML文件。在Azure CLI中,指定资源组名称、YAML脚本文件。如下图所示,使用Azure CLI和YAML脚本,容器部署正在进行中。
az container create --resource-group myResourceGroup --file myazuresql.yaml

一旦容器部署完毕,记下公共IP地址和FQDN。

使用公共IP地址或FQDN验证SQL Server与Azure Container Instance的连接。如果你在SSMS中查看服务器名称,它显示的是以SandboxHost开头的名称。SQL Server版本是安装在Ubuntu 20.04上的开发者版本。

总结
本文探讨了用于Azure容器实例部署与SQL Server 2019 Linux镜像的YAML脚本。我们还探讨了如何将现有的容器导出到YAML文件中,用你的配置更新该文件,并使用Azure CLI重新部署它们。
