2017-08-09 115 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命令。 –

相關問題