首页 文章

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

提问于
浏览
0

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

这是我做的事情

  • 我确实在Azure门户中创建了Azure容器服务帐户/域/虚拟机

  • 此外,我确实为已经安装了Docker的Containers创建了另一个Windows Server 2016虚拟机

  • 在Windows服务器2016上,我创建了一个简单的.NET Core Web API应用程序,并使用Docker为该应用程序创建了一个映像

  • 我确实将Web API应用程序的映像推送到Docker集线器,并使用SSH隧道接口尝试将映像下载到Azure容器服务中,因此可以从该服务运行

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

有没有办法将Windows Docker容器部署到Azure容器服务a . 我应该在Windows中创建Azure容器服务吗?湾我应该使用另一个orchestrator(不是Docker)将Windows容器部署到Azure容器服务中吗? C . 我应该走另一条路吗?

非常感谢您的支持!

1 回答

  • 1

    Windows容器无法在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 .

相关问题