How to expose multiple ports on Azure Container Instance?

前端 未结 4 2134
故里飘歌
故里飘歌 2021-02-08 01:04

Is it possible to expose/open more than one port on an Azure Container Instance? I\'ve only been able to open one port per container.

I\'d like to run the equivalent of:

相关标签:
4条回答
  • 2021-02-08 01:30

    This can now be done via Azure CLI. Example is below:

    az container create -g MyResourceGroup --name myalpine --image alpine:latest --ip-address public --ports 80 443

    https://docs.microsoft.com/en-us/cli/azure/container?view=azure-cli-latest#az_container_create

    0 讨论(0)
  • 2021-02-08 01:37

    Now Azure Portal provides way to add two extra ports. All you need is to say "Yes" to Open additional ports in Configuration while creating ACI. See Image below.

    0 讨论(0)
  • 2021-02-08 01:43

    Since ports ( indicated by [] ) property is an array you can add more elements to it:

    {
      "$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 template:
    https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-create-first-template#deploy-template

    0 讨论(0)
  • 2021-02-08 01:49

    You can, but currently you can only do it with an Azure Resource Manager template. The CLI and the portal are both oriented towards the simple case: one container in the container group, and one exposed port in that container.

    Here's an example resources section from an Azure Resource Manager template (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"
                        }
                    ]
                 }
            }
        }
    ]
    

    You can deploy the template using az group deployment create (full documentation):

    az group deployment create -n myDeployment --template-file azuredeploy.json --parameters @azuredeploy.parameters.json -g myResourceGroup
    
    0 讨论(0)
提交回复
热议问题