Nastavení proměnných prostředí v instancích kontejneru

Když v instancích kontejnerů nastavíte proměnné prostředí, můžete dynamicky konfigurovat aplikaci nebo skript, které kontejner spustí. Podobá se argumentu příkazového --env řádku .docker run

Pokud chcete nastavit proměnné prostředí v kontejneru, zadejte je při vytváření instance kontejneru. Tento článek ukazuje příklady nastavení proměnných prostředí při spuštění kontejneru pomocí Azure CLI, Azure PowerShell a Azure Portal.

Pokud například spustíte image kontejneru Microsoft aci-wordcount , můžete její chování upravit zadáním následujících proměnných prostředí:

NumWords: Počet slov odeslaných do stDOUT.

MinLength: Minimální počet znaků ve slově, které se mají spočítat. Vyšší číslo ignoruje běžná slova jako "of" a "the".

Pokud potřebujete předat tajné kódy jako proměnné prostředí, Azure Container Instances podporuje zabezpečené hodnoty pro kontejnery Windows i Linux.

Poznámka

Tento článek používá modul Azure Az PowerShell, což je doporučený modul PowerShellu pro interakci s Azure. Pokud chcete začít s modulem Az PowerShell, projděte si téma věnované instalaci Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Příklad Azure CLI

Pokud chcete zobrazit výchozí výstup kontejneru aci-wordcount , spusťte ho nejprve pomocí tohoto příkazu az container create (nejsou zadány žádné proměnné prostředí):

az container create \
    --resource-group myResourceGroup \
    --name mycontainer1 \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --restart-policy OnFailure

Pokud chcete upravit výstup, spusťte druhý kontejner s přidaným --environment-variables argumentem a zadejte hodnoty pro proměnné NumWords a MinLength . (V tomto příkladu předpokládejme, že používáte rozhraní příkazového řádku v prostředí Bash nebo azure Cloud Shell. Pokud používáte příkazový řádek Windows, zadejte proměnné s dvojitými uvozovkami, například --environment-variables "NumWords"="5" "MinLength"="8".)

az container create \
    --resource-group myResourceGroup \
    --name mycontainer2 \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --restart-policy OnFailure \
    --environment-variables 'NumWords'='5' 'MinLength'='8'

Jakmile se stav obou kontejnerů zobrazí jako Ukončeno (pomocí příkazu az container show to check state), zobrazte jejich protokoly pomocí příkazu az container logs a zobrazte výstup.

az container logs --resource-group myResourceGroup --name mycontainer1
az container logs --resource-group myResourceGroup --name mycontainer2

Výstupy kontejnerů ukazují, jak jste upravili chování skriptu druhého kontejneru nastavením proměnných prostředí.

mycontainer1

[('the', 990),
 ('and', 702),
 ('of', 628),
 ('to', 610),
 ('I', 544),
 ('you', 495),
 ('a', 453),
 ('my', 441),
 ('in', 399),
 ('HAMLET', 386)]

mycontainer2

[('CLAUDIUS', 120),
 ('POLONIUS', 113),
 ('GERTRUDE', 82),
 ('ROSENCRANTZ', 69),
 ('GUILDENSTERN', 54)]

příklad Azure PowerShell

Nastavení proměnných prostředí v PowerShellu se podobá rozhraní příkazového řádku, ale používá argument příkazového -EnvironmentVariable řádku.

Nejprve spusťte kontejner aci-wordcount ve své výchozí konfiguraci pomocí tohoto příkazu New-AzContainerGroup :

New-AzContainerGroup `
    -ResourceGroupName myResourceGroup `
    -Name mycontainer1 `
    -Image mcr.microsoft.com/azuredocs/aci-wordcount:latest

Teď spusťte následující příkaz New-AzContainerGroup . Tento parametr určuje proměnné prostředí NumWords a MinLength po naplnění proměnné pole: envVars

$envVars = @{'NumWords'='5';'MinLength'='8'}
New-AzContainerGroup `
    -ResourceGroupName myResourceGroup `
    -Name mycontainer2 `
    -Image mcr.microsoft.com/azuredocs/aci-wordcount:latest `
    -RestartPolicy OnFailure `
    -EnvironmentVariable $envVars

Jakmile je stav obou kontejnerů ukončen (pomocí rutiny Get-AzContainerInstanceLog zkontrolujte stav), stáhněte své protokoly příkazem Get-AzContainerInstanceLog .

Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer1
Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer2

Výstup pro každý kontejner ukazuje, jak jste upravili skript spuštěný kontejnerem nastavením proměnných prostředí.

PS Azure:\> Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer1
[('the', 990),
 ('and', 702),
 ('of', 628),
 ('to', 610),
 ('I', 544),
 ('you', 495),
 ('a', 453),
 ('my', 441),
 ('in', 399),
 ('HAMLET', 386)]

Azure:\
PS Azure:\> Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer2
[('CLAUDIUS', 120),
 ('POLONIUS', 113),
 ('GERTRUDE', 82),
 ('ROSENCRANTZ', 69),
 ('GUILDENSTERN', 54)]

Azure:\

příklad Azure Portal

Pokud chcete nastavit proměnné prostředí při spuštění kontejneru v Azure Portal, zadejte je na stránce Upřesnit při vytváření kontejneru.

  1. Na stránce Upřesnit nastavte zásadu restartování na Zapnuto.
  2. V části Proměnné prostředí zadejte NumWords hodnotu 5 první proměnné a zadejte MinLength hodnotu 8 druhé proměnné.
  3. Výběrem možnosti Zkontrolovat a vytvořit ověřte a pak kontejner nasaďte.

Portal page showing environment variable Enable button and text boxes

Pokud chcete zobrazit protokoly kontejneru, v části Nastavení vyberte Kontejnery a pak Protokoly. Podobně jako výstup zobrazený v předchozích částech rozhraní příkazového řádku a PowerShellu se můžete podívat, jak se chování skriptu upravilo proměnnými prostředí. Zobrazí se pouze pět slov s minimální délkou osmi znaků.

Portal showing container log output

Zabezpečené hodnoty

Objekty se zabezpečenými hodnotami jsou určeny k ukládání citlivých informací, jako jsou hesla nebo klíče pro vaši aplikaci. Použití zabezpečených hodnot pro proměnné prostředí je bezpečnější a flexibilnější než zahrnutí do image kontejneru. Další možností je použít svazky tajných kódů popsané v části Připojení svazku tajných kódů v Azure Container Instances.

Proměnné prostředí se zabezpečenými hodnotami nejsou ve vlastnostech kontejneru viditelné – k jejich hodnotám je možné přistupovat pouze z kontejneru. Například vlastnosti kontejneru zobrazené v Azure Portal nebo Azure CLI zobrazují jenom název zabezpečené proměnné, nikoli její hodnotu.

Nastavte zabezpečenou proměnnou prostředí zadáním secureValue vlastnosti místo běžného value typu proměnné. Tyto dvě proměnné definované v následujícím jazyce YAML ukazují dva typy proměnných.

Nasazení YAML

secure-env.yaml Vytvořte soubor s následujícím fragmentem kódu.

apiVersion: 2019-12-01
location: eastus
name: securetest
properties:
  containers:
  - name: mycontainer
    properties:
      environmentVariables:
        - name: 'NOTSECRET'
          value: 'my-exposed-value'
        - name: 'SECRET'
          secureValue: 'my-secret-value'
      image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
tags: null
type: Microsoft.ContainerInstance/containerGroups

Spuštěním následujícího příkazu nasaďte skupinu kontejnerů pomocí YAML (podle potřeby upravte název skupiny prostředků):

az container create --resource-group myResourceGroup --file secure-env.yaml

Ověření proměnných prostředí

Spusťte příkaz az container show pro dotazování proměnných prostředí kontejneru:

az container show --resource-group myResourceGroup --name securetest --query 'containers[].environmentVariables'

Odpověď JSON zobrazuje klíč i hodnotu nezabezpečené proměnné prostředí, ale pouze název zabezpečené proměnné prostředí:

[
  [
    {
      "name": "NOTSECRET",
      "secureValue": null,
      "value": "my-exposed-value"
    },
    {
      "name": "SECRET",
      "secureValue": null,
      "value": null
    }
  ]
]

Pomocí příkazu az container exec , který umožňuje spuštění příkazu ve spuštěném kontejneru, můžete ověřit, že byla nastavena proměnná zabezpečeného prostředí. Spuštěním následujícího příkazu spusťte interaktivní relaci Bash v kontejneru:

az container exec --resource-group myResourceGroup --name securetest --exec-command "/bin/sh"

Po otevření interaktivního prostředí v rámci kontejneru můžete získat přístup k SECRET hodnotě proměnné:

root@caas-ef3ee231482549629ac8a40c0d3807fd-3881559887-5374l:/# echo $SECRET
my-secret-value

Další kroky

Scénáře založené na úlohách, jako je dávkové zpracování velké datové sady s několika kontejnery, mohou těžit z vlastních proměnných prostředí za běhu. Další informace o spouštění kontejnerů založených na úlohách najdete v tématu Spouštění kontejnerizovaných úloh se zásadami restartování.