2017-08-09 13 views
0

Dot Net Core Web APIアプリケーションをコンテナ化する必要があるAzureドメイン/環境内でWindowsコンテナを正しく動作させるためのアーキテクチャ研究を完了しようとしています。 AzureのコンテナサービスここAzureコンテナサービスにWindowsコンテナをデプロイする

にそのコンテナを展開し、私は

  1. 私はAzureのポータル内Azureのコンテナサービスアカウント/ドメイン/仮想マシンを作成しました

    をした事がある

  2. また、既にDockerがインストールされているコンテナでWindows Server 2016の別の仮想マシンを作成しました。

  3. Windowsサーバー2016では、単純な.NETコアWeb APIアプリケーションを作成し、ドッカー

  4. を使用して、私はドッカーハブにWeb APIをアプリケーションのイメージをプッシュしなかったし、それがそのサービス

から実行できるようにSSHトンネルインターフェイスを使用すると、Azureのコンテナサービスに画像をダウンロードしてみました

しかし、私はメッセージを受け取るだろうAzureコンテナサービスはデフォルトでLinuxシステムであるため、WindowsコンテナをLinux上で実行することはできません

AzureコンテナサービスにWindows Dockerコンテナを展開する方法はありますか。a。 a。 AzureコンテナサービスはWindowsで作成する必要がありますか? b。 AzureコンテナサービスにWindowsコンテナを展開するために別のオーケストレーター(Dockerではない)を使用する必要がありますか? c。私は別の道を行くべきですか?

ご利用いただきありがとうございます。

+0

Azureコンテナサービス?どのオーケストレーターを選んでいますか? Kubernetes? –

+0

私たちはドッカー集団を選んでいます、あなたの助けてくれてありがとう! – Mikhail

答えて

1

Windowsコンテナは、AzureコンテナとしてLinux上で実行できません。 サービスは、デフォルトではLinuxシステムです。

私たちが知っているように、LinuxとWindowsに関するコンテナは異なるため、Linuxシステム上でWindowsコンテナを実行することはできません。

回避策として、Windowsエージェントを使用してAzureコンテナサービス(kubernetesを選択)を作成して、Windowsコンテナをkubernetes Windowsエージェントに展開できます。

私たちAzureのポータルを介してAzureのコンテナサービスを展開することができます、エージェントの設定でkubernetesにオーケストレーターを選択し、私たちはWindowsのオペレーティングシステムを選択する必要があります。このように、kubernetesのマスターはLinuxで、エージェントはWindowsです。

kubectlとドッカーファイルを使用してWindowsコンテナを作成できます。 たとえば、WindowsコンテナにIISコンテナを展開できます。 Kubernetesはコンテナの管理に使用するツールであるため、k8を使用してWindowsノードにIISを展開できます。このような

1.create 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使用:WindowsのIISコンテナを展開するK8Sを使用する方法についての

kubectl apply -f iis.json 

詳しい情報は、このlinkを参照してください。

コンテナイメージを使用する場合は、イメージをAzure container registryにアップロードして、レジストリからイメージを引き出すことができます。

Azureコンテナレジストリとプル画像の秘密を設定する方法は、answerを参照してください。

+0

ありがとうございました!私はAzure bashシェル内でKubernetesクラスタを作成し、kubectlコマンドを実行することができました。私がこの環境のために理解しているように、私はコンテナを実行できるはずです。しかし、私がドッカーハブから画像を取得しようとすると、「unix:///var/run/docker.sockでDockerデーモンに接続できません。ドッカーデーモンは動作していますか?」そして、私はどのようにドッカーデーモンを起動するための情報を見つけることができないので、私はコンテナを実行することができます。私は正しい道にいるのですか?Docker Windows ContainerのKubernetesでドッキング・コマンドを使用しないでください。 – Mikhail

+0

@Mikhail Kubernetesは、デフォルトでDockerが動作しているコンテナを管理するツールですが、K8sエージェント(ノード)に接続する必要があります。そのノードではdockerコマンドを実行できますが、kubectlコマンドを使用してドッカーコマンドを使用すべきではありません。私たちが知っているように、k8sマスターはapiと他のサービスを実行し、コンテナサービスを実行していない、コンテナはk8sエージェント上で実行されます。 –

+0

@Mikhail k8sエージェントに接続してdockerコマンドを実行する場合、同じVnetに別のVM(ジャンプボックス)を作成し、このVMのパブリックIPアドレスをsshしてからR8をK8Sエージェントにsshすることができます。そのセッションでは、dockerコマンドを直接実行できます。 –

関連する問題