Azure Container Instances に emptyDir ボリュームをマウントする

emptyDir ボリュームをマウントし、Azure Container Instances のコンテナー グループに属するコンテナー間でデータを共有する方法について説明します。 コンテナー化されたワークロードのエフェメラル キャッシュとして emptyDir ボリュームを使用します。

Note

emptyDir ボリュームのマウントは現在、Linux コンテナーに限定されています。 Microsoft ではすべての機能を Windows コンテナーに取り入れるように取り組んでいますが、現在のプラットフォームの違いは、概要に関するページで確認できます。

emptyDir ボリューム

emptyDir ボリュームによって、あるコンテナー グループに属する各コンテナーにアクセスできる、書き込み可能なディレクトリが与えられます。 グループ内のコンテナーはボリューム内の同じファイルを読み書きできます。ボリュームは同じか別のパスを利用して各コンテナーにマウントできます。

emptyDir ボリュームの使用例:

  • スクラッチ領域
  • 長時間実行されるタスクの間のチェックポイント機能
  • サイドカー コンテナーが取得し、アプリケーション コンテナーがサービスを提供するデータの保存

emptyDir ボリュームのデータはコンテナーがクラッシュしても存続します。 ただし、再開後のコンテナーが emptyDir ボリュームのデータを永続化するかどうかは保証されません。 コンテナー グループを停止した場合、emptyDir ボリュームは永続化されません。

Linux emptyDir ボリュームの最大サイズは 50 GB です。

emptyDir ボリュームをマウントする

コンテナー インスタンスに emptyDir ボリュームをマウントするには、Azure Resource Manager テンプレートYAML ファイル、またはその他のプログラムによる方法を使用してデプロイを行って、コンテナー グループをデプロイすることができます。

最初に、ファイルのコンテナー グループ properties セクションに volumes 配列を入力します。 次に、emptyDir ボリュームをマウントするコンテナー グループ内の各コンテナーに対して、コンテナー定義の properties セクションで volumeMounts 配列を設定します。

たとえば、次の Resource Manager テンプレートでは、それぞれが emptyDir ボリュームを作成する 2 つのコンテナーから構成されるコンテナー グループが作成されます。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
    "container2name": "aci-tutorial-sidecar",
    "container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
  },
  "resources": [
    {
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2021-03-01",
      "name": "volume-demo-emptydir",
      "location": "[resourceGroup().location]",
      "properties": {
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                }
              ],
              "volumeMounts": [
                {
                  "name": "emptydir1",
                  "mountPath": "/mnt/empty"
                }
              ]
            }
          },
          {
            "name": "[variables('container2name')]",
            "properties": {
              "image": "[variables('container2image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "volumeMounts": [
                {
                  "name": "emptydir1",
                  "mountPath": "/mnt/empty"
                }
              ]
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            }
          ]
        },
        "volumes": [
          {
            "name": "emptydir1",
            "emptyDir": {}
          }
        ]
      }
    }
  ]
}

コンテナー グループのデプロイの例については、「Resource Manager テンプレートを使用してマルチコンテナー グループをデプロイする」および「YAML ファイルを使用して複数コンテナー グループをデプロイする」を参照してください。

次のステップ

Azure Container Instances にその他の種類のボリュームをマウントする方法について学習してください。