Sdílet prostřednictvím


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

Když v instancích kontejnerů nastavíte proměnné prostředí, můžete dynamicky konfigurovat aplikaci nebo skript, které kontejner spustí. To se podobá argumentu příkazového --env řádku jako .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 PowerShellu a webu Azure Portal.

Pokud například spustíte image kontejneru Microsoft aci-wordcount , můžete upravit její chování 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:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Pokud chcete začít, přečtěte si téma Instalace 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 zadané žá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 argumentem --environment-variables a zadejte hodnoty pro proměnné NumWords a MinLength . (V tomto příkladu se předpokládá, že používáte rozhraní příkazového řádku v prostředí Bash nebo Azure Cloud Shellu. Pokud používáte příkazový řádek systému 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 ke kontrole stavu), zobrazte jejich protokoly pomocí příkazu az container logs a podívejte se na 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 PowerShellu

Nastavení proměnných prostředí v PowerShellu je podobné 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 . Tato proměnná určuje proměnné prostředí NumWords a MinLength po naplnění proměnné pole: envVars

$envVars = @(
    New-AzContainerInstanceEnvironmentVariableObject -Name "NumWords" -Value "5"
    New-AzContainerInstanceEnvironmentVariableObject -Name "MinLength" -Value "8"
)

$containerGroup = New-AzContainerGroup -ResourceGroupName "myResourceGroup" `
    -Name "mycontainer2" `
    -Image "mcr.microsoft.com/azuredocs/aci-wordcount:latest" `
    -RestartPolicy "OnFailure" `
    -Container @(
        New-AzContainerGroupContainer -Name "mycontainer2" `
            -EnvironmentVariable $envVars
    )

Jakmile je stav obou kontejnerů ukončen (pomocí rutiny Get-AzContainerInstanceLog zkontrolujte stav), stáhněte si protokoly pomocí příkazu 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 webu Azure Portal

Pokud chcete nastavit proměnné prostředí při spuštění kontejneru na webu 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 Hodnotu Při selhání.
  2. V části Proměnné prostředí zadejte NumWords hodnotu 5 první proměnné a zadejte MinLength hodnotu 8 druhé proměnné.
  3. Vyberte Zkontrolovat a vytvořit a ověřte a pak kontejner nasaďte.

Stránka portálu zobrazující tlačítko Povolit proměnnou prostředí a textová pole

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

Portál zobrazující výstup protokolu kontejneru

Zabezpečené hodnoty

Objekty se zabezpečenými hodnotami jsou určené k uchovává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 tématu Připojení svazku tajných kódů ve službě 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é na webu Azure Portal nebo v 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 pro typ proměnné. Dvě proměnné definované v následujícím jazyce YAML ukazují dva typy proměnných.

Nasazení YAML

Vytvořte secure-env.yaml 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í

Spuštěním příkazu az container show zadejte dotaz na proměnné 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 jenom 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 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, můžou 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 pomocí zásad restartování.