2017-08-09 4 views
7

Ist es möglich, mehr als einen Port auf einem Azure Container Instance offen zu legen/zu öffnen? Ich konnte nur einen Port pro Container öffnen.Wie werden mehrere Ports in Azure Container Instance verfügbar gemacht?

Ich möchte das Äquivalent laufen: docker run -p 80:80 -p 443:443 ...

ich erfolglos versucht haben:

  • Karten nur die letzte Hafen: az container create ... --port 80 --port 443
  • Syntaxfehler: az container create ... --port 80 443

Aber die Ressource JSON scheint anzuzeigen, dass ein Array möglich ist:

az container show -name <container-name> --resource-group <resource-group-name> 

Response: 
{ 
    "containers": [ 
    { 
     ... 
     "name": "...", 
     "ports": [ 
     { 
      "port": 80 
     } 
     ... 
    } 
    ], 
    ... 
    "ipAddress": { 
    "ip": "xxx.xxx.xxx.xxx", 
    "ports": [ 
     { 
     "port": 80, 
     "protocol": "TCP" 
     } 
    ] 
    }, 
    ... 
} 

Antwort

1

Seit ports (durch []) Eigenschaft ist ein Array Sie mehr Elemente hinzufügen können:

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": {  
    "name": { 
     "type": "string", 
     "defaultValue": "acilinuxpublicipcontainergroup" 
    },  
    "image": {   
     "type": "string", 
     "defaultValue": "microsoft/aci-helloworld" 
    }, 
    "port": { 
     "type": "string", 
     "defaultValue": "80" 
    },  
    "cpuCores": { 
     "type": "string", 
     "defaultValue": "1.0" 
    }, 
    "memoryInGb": { 
     "type": "string", 
     "defaultValue": "1.5" 
    } 
    }, 
    "resources": [ 
    { 
      "name": "[parameters('name')]", 
      "type": "Microsoft.ContainerInstance/containerGroups", 
      "apiVersion": "2017-08-01-preview", 
      "location": "[resourceGroup().location]", 
      "properties": { 
       "containers": [ 
        { 
         "name": "[parameters('name')]", 
         "properties": { 
          "image": "[parameters('image')]", 
          "ports": [ 
           { 
            "port": "[parameters('port')]" 
           } 
          ], 
          "resources": { 
           "requests": { 
            "cpu": "[parameters('cpuCores')]", 
            "memoryInGb": "[parameters('memoryInGb')]" 
           } 
          } 
         } 
        } 
       ], 
       "osType": "Linux", 
       "ipAddress": { 
        "type": "Public", 
        "ports": [ 
         { 
          "protocol": "tcp", 
          "port": "[parameters('port')]" 
         }, 
         { 
          "protocol": "tcp", 
          "port": "[parameters('port2')]" 
         } 
        ] 
       } 
      } 
     } 
    ] 
} 

https://github.com/Azure/azure-quickstart-templates/tree/master/101-aci-linuxcontainer-public-ip

Deploy Vorlage:
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-create-first-template#deploy-template

+0

Das JSON das ist * Antwort * vom 'az Container show' Befehl ... – dstj

+0

gut, ich dachte, Sie sprechen über den Arm Vorlage. Im Grunde genommen können Sie das folgende Snippet in der Armvorlage verwenden, um die vom Container verwendeten Ports zu definieren. – 4c74356b41

+0

Oh, können Sie Ihre Antwort verbessern, um ein vollständigeres Beispiel zu geben? – dstj

3

Sie können, Derzeit können Sie dies jedoch nur mit einer Azure Resource Manager-Vorlage tun. Das CLI und das Portal sind beide auf den einfachen Fall ausgerichtet: ein Container in der container group und ein exponierter Port in diesem Container.

Hier ist ein Beispiel Ressourcen Abschnitt aus einer Vorlage Azure Resource Manager (see full template):

"resources": [ 
{ 
     "name": "myContainerGroup", 
     "type": "Microsoft.ContainerInstance/containerGroups", 
     "apiVersion": "2017-08-01-preview", 
     "location": "[resourceGroup().location]", 
     "properties": { 
      "containers": [ 
       { 
        "name": "myContainer", 
        "properties": { 
         "image": "seanmckenna/aci-helloworld-multiport", 
         "ports": [ 
          { 
           "port": "80" 
          }, 
          { 
           "port": "443" 
          } 
         ], 
         "resources": { 
          "requests": { 
           "cpu": "1.0", 
           "memoryInGb": "1.5" 
          } 
         } 
        } 
       } 
      ], 
      "osType": "Linux", 
      "ipAddress": { 
       "type": "Public", 
       "ports": [ 
        { 
         "protocol": "tcp", 
         "port": "80" 
        }, 
        { 
         "protocol": "tcp", 
         "port": "443" 
        } 
       ] 
      } 
     } 
    } 
] 

Sie die Vorlage bereitstellen können mit az group deployment create (full documentation):

az group deployment create -n myDeployment --template-file azuredeploy.json --parameters @azuredeploy.parameters.json -g myResourceGroup 
+0

Danke, hatten Sie das vorher gepostet, wären Sie die akzeptierte Antwort gewesen. Aber nachdem er das Missverständnis mit @ 4c74356b41 ausgearbeitet hat, hat seine Arbeit auch erledigt ... – dstj

+2

Für alle anderen können Sie das jetzt mit dem Parameter --ports tun: https://docs.microsoft.com/en-us/ cli/azure/container? view = azure-cli-letzte # az_container_create –

Verwandte Themen