web-dev-qa-db-ja.com

Azure Container Instanceで複数のポートを公開する方法は?

Azure Container Instance で複数のポートを公開/開くことは可能ですか?コンテナごとに1つのポートしか開くことができませんでした。

同等のものを実行したい:docker run -p 80:80 -p 443:443 ...

私は失敗しました:

  • 最後のポートのみをマップします:az container create ... --port 80 --port 443
  • 構文エラー: az container create ... --port 80 443

しかし、リソースJSONは配列が可能であることを示しているようです:

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"
      }
    ]
  },
  ...
}
11
dstj

ports[]で示される)プロパティは配列であるため、要素をさらに追加できます。

{
  "$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

テンプレートをデプロイ:
https://docs.Microsoft.com/en-us/Azure/azure-resource-manager/resource-manager-create-first-template#deploy-template

5
4c74356b41

これは、Azure CLIを介して実行できるようになりました。以下に例を示します。

azコンテナー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

17
jluk

できますが、現在は、Azure Resource Managerテンプレートでのみ実行できます。 CLIとポータルはどちらも単純なケースに向けられています。1つは コンテナーグループ のコンテナーで、もう1つはそのコンテナーの公開ポートです。

Azure Resource Managerテンプレートのリソースセクションの例を次に示します( テンプレート全体を参照 )。

"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"
                    }
                ]
             }
        }
    }
]

az group deployment createを使用してテンプレートをデプロイできます( 完全なドキュメント ):

az group deployment create -n myDeployment --template-file azuredeploy.json --parameters @azuredeploy.parameters.json -g myResourceGroup
5
Sean McKenna

Azure Portalは、2つのポートを追加する方法を提供します。必要なのは、「はい」をと言うだけです。追加のポートを開く ACIの作成中の構成。下の画像を参照してください。

enter image description here

1
Karthikeyan VK