2017-08-09 83 views
0

我试图完成对如何正确使用Windows集装箱在Azure域/环境中工作,我必须containerize点网络核心的Web API应用程序的体系结构研究部署容器到Azure的集装箱服务部署Windows集装箱(与泊坞窗创建)到Azure的集装箱服务

这里是我做

  1. 我做了Azure的门户网站中创建一个蓝色的集装箱服务帐户/域/虚拟机的事情

  2. 另外,我确实为Windows Server 2016创建了另一个已安装Docker的容器的虚拟机

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

  4. 我没有在Web API应用程序的形象推到码头工人枢纽和使用SSH隧道接口试图将图像下载到Azure的集装箱服务,因此它可以从该服务

运行

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

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

非常感谢您的支持!

+0

Azure容器服务?你选择哪一个管弦乐队? Kubernetes? –

+0

我们正在选择码头群,谢谢你的帮助! – Mikhail

回答

1

Windows Containers无法在Linux上作为Azure容器运行 服务默认为Linux系统。

正如我们所知,关于Linux和windows的容器是不同的,所以我们不能在Linux系统上运行windows容器。

作为一种变通方法,我们可以创建Azure的容器服务(选择kubernetes)与Windows代理,所以我们可以部署Windows容器kubernetes Windows代理。

我们可以通过Azure的门户部署Azure的集装箱业务,选择Orchestrator可以kubernetes,在代理配置,我们应该选择操作系统为Windows。这样,kubernetes的主人就是Linux,代理人是windows。

我们可以用kubectl和泊坞窗文件创建窗口容器。 例如,我们可以在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适用命令创建吊舱,这样的:有关如何使用K8S来部署Windows IIS容器

kubectl apply -f iis.json 

的更多信息,请参阅本link

如果你想使用你的容器图片,你可以上传你的图片到Azure container registry,然后从注册表中拉出图片。

如何为Azure容器注册表设置秘密并拉取图片,请参考此answer

+0

非常感谢您的帮助!我确实在Azure bash shell中创建了一个Kubernetes集群,并且能够运行kubectl命令。据我了解这个环境,我应该能够运行容器。但是,无论何时我试图从docker集线器中提取映像“无法连接到unix上的Docker守护进程:///var/run/docker.sock。docker守护进程是否正在运行?”。而且我找不到任何有关如何启动docker守护进程的信息,所以我可以运行这些容器。我在正确的道路上,还是应该在Docker Windows Container的Kubernetes上使用docker命令? – Mikhail

+0

@Mikhail Kubernetes是一个用于管理容器的工具,默认情况下,docker正在运行,但我们应该连接到K8s代理(节点),在该节点中,我们可以运行docker命令,但我们应该使用'kubectl'命令来创建和管理容器,不应该使用docker命令。正如我们所知,k8s主要运行api和其他服务,而不是运行容器服务,容器将运行在k8s代理上。 –

+0

@Mikhail如果你想连接到k8s代理并运行docker命令,我们可以在同一个Vnet中创建另一个VM(跳箱),并将这个虚拟机的公有IP地址ssh,然后将RDP转换为K8S代理。在那个会话中,我们可以直接运行docker命令。 –

相关问题