我正在尝试完成有关如何在Azure域/环境中正确使用Windows容器的架构研究,我必须将Dot Net Core Web API应用程序容纳并将该容器部署到Azure容器服务中
以下是我做过的事情
我确实在Azure门户中创建了Azure容器服务帐户/域/虚拟机
此外,我确实为已经安装了Docker的Container安装了另一台Windows Server 2016虚拟机
在Windows服务器2016上,我创建了一个简单的.NET Core Web API应用程序,并使用Docker为该应用程序创建了一个图像
我确实将Web API应用程序的映像推送到Docker中心,并使用SSH隧道接口尝试将映像下载到Azure容器服务中,因此可以从该服务运行
< / LI> 醇>但是,我会收到一条消息,Windows容器无法在Linux上运行,因为默认情况下Azure容器服务是Linux系统
有没有办法将Windows Docker容器部署到Azure容器服务中 一个。我应该在Windows中创建Azure容器服务吗? 湾我应该使用另一个orchestrator(不是Docker)将Windows容器部署到Azure容器服务中吗? C。我应该走另一条路吗?
非常感谢您的支持!
答案 0 :(得分:1)
Windows Containers无法在Linux上作为Azure容器运行 默认情况下,服务是Linux系统。
众所周知,Linux和Windows的容器不同,所以我们无法在Linux系统上运行Windows容器。
作为一种解决方法,我们可以使用Windows代理创建Azure容器服务(选择kubernetes),因此我们可以将windows容器部署到kubernetes windows代理。
我们可以通过Azure门户部署Azure容器服务,选择orchestrator到kubernetes,在代理配置中,我们应该选择操作系统到windows。通过这种方式,kubernetes的主人是Linux,代理人是windows。
我们可以使用kubectl
和docker文件来创建Windows容器。
例如,我们可以在Windows代理上部署IIS容器。 Kubernetes是一个用于管理容器的工具,因此我们可以使用k8s将IIS部署到Windows节点。
1.创建iis.json
文件,如下所示:
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "iis",
"labels": {
"name": "iis"
}
},
"spec": {
"containers": [
{
"name": "iis",
"image": "nanoserver/iis",
"ports": [
{
"containerPort": 80
}
]
}
],
"nodeSelector": {
"beta.kubernetes.io/os": "windows"
}
}
}
2.使用kubctl apply命令创建pod,如下所示:
kubectl apply -f iis.json
有关如何使用k8s部署Windows IIS容器的更多信息,请参阅此link。
如果您想使用容器图片,可以将图片上传到Azure container registry,然后从注册表中提取图片。
如何为Azure容器注册表设置机密并提取图片,请参阅此answer。