将Windows容器(使用Docker创建)部署到Azure容器服务中

我正在尝试完成有关如何在Azure域/环境中正确使用Windows容器的架构研究,其中我必须将Dot Net Core Web API应用程序容器化并将该容器部署到Azure容器服务中

这是我做的事情

>我确实在Azure门户中创建了Azure容器服务帐户/域/虚拟机
>另外,我确实使用已安装Docker的容器为Windows Server 2016创建了另一个虚拟机
>在Windows Server 2016上,我确实创建了一个简单的.NET Core Web API应用程序并使用Docker为该应用程序创建了一个映像
>我确实将Web API应用程序的映像推送到Docker集线器中,并使用SSH隧道接口尝试将映像下载到Azure容器服务中,以便可以从该服务运行该映像

但是,我会收到一条消息,指出Windows容器无法在Linux上运行,因为默认情况下Azure容器服务是Linux系统

有没有一种方法可以将Windows Docker容器部署到Azure容器服务中
 一种.我应该在Windows中创建Azure容器服务吗?
 湾我是否应该使用其他协调器(非Docker)将Windows容器部署到Azure容器服务中?
 C.我应该走另外一条路吗?

预先非常感谢您的支持!

最佳答案

the Windows Containers cannot run on Linux as the Azure Container
Service by default is a Linux system.

我们知道,关于Linux和Windows的容器是不同的,因此我们不能在Linux系统上运行Windows容器.

解决方法是,我们可以使用Windows Agent创建Azure容器服务(选择kubernetes),以便将Windows容器部署到kubernetes Windows Agent.

我们可以通过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

有关如何使用k8部署Windows IIS容器的更多信息,请参考此link.

如果要使用容器映像,可以将映像上载到Azure container registry,然后从注册表中提取该映像.

如何为Azure容器注册表设置机密并提取图像,请参考此answer.

转载注明原文:将Windows容器(使用Docker创建)部署到Azure容器服务中 - 代码日志