Ange miljövariabler i containerinstanser

Genom att ställa in miljövariabler i dina containerinstanser kan du skapa en dynamisk konfiguration av programmet eller skriptet som körs av containern. Detta liknar kommandoradsargumentet --env till docker run.

Om du vill ange miljövariabler i en container anger du dem när du skapar en containerinstans. Den här artikeln visar exempel på hur du ställer in miljövariabler när du startar en container med Azure CLI, Azure PowerShell och Azure Portal.

Om du till exempel kör containeravbildningen Microsoft aci-wordcount kan du ändra dess beteende genom att ange följande miljövariabler:

NumWords: Antalet ord som skickas till STDOUT.

MinLength: Det minsta antalet tecken i ett ord för att det ska räknas. Ett högre tal ignorerar vanliga ord som "av" och "the".

Om du behöver skicka hemligheter som miljövariabler stöder Azure Container Instances säkra värden för både Windows- och Linux-containrar.

Anteckning

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Azure CLI-exempel

Om du vill se standardutdata för containern aci-wordcount kör du den först med kommandot az container create (inga miljövariabler har angetts):

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

Om du vill ändra utdata startar du en andra container med argumentet --environment-variables tillagt och anger värden för variablerna NumWords och MinLength . (Det här exemplet förutsätter att du kör CLI i ett Bash-gränssnitt eller Azure Cloud Shell. Om du använder Windows-kommandotolken anger du variablerna med dubbla citattecken, till exempel --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'

När båda containrarnas tillstånd visas som Avslutat (använd az container show för att kontrollera tillståndet) visar de sina loggar med az containerloggar för att se utdata.

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

Utdata från containrarna visar hur du har ändrat den andra containerns skriptbeteende genom att ange miljövariabler.

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)]

Azure PowerShell exempel

Inställningen av miljövariabler i PowerShell liknar CLI, men använder kommandoradsargumentet -EnvironmentVariable .

Starta först containern aci-wordcount i standardkonfigurationen med det här Kommandot New-AzContainerGroup :

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

Kör nu följande New-AzContainerGroup-kommando . Den här anger miljövariablerna NumWords och MinLength när en matrisvariabel har fyllts i: 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
    )

När båda containrarnas tillstånd har avslutats (använd Get-AzContainerInstanceLog för att kontrollera tillståndet) hämtar du loggarna med kommandot Get-AzContainerInstanceLog .

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

Utdata för varje container visar hur du har ändrat skriptet som körs av containern genom att ange miljövariabler.

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:\

Azure Portal exempel

Om du vill ange miljövariabler när du startar en container i Azure Portal anger du dem på sidan Avancerat när du skapar containern.

  1. På sidan Avancerat anger du omstartsprincipen till På-fel
  2. Under Miljövariabler anger du NumWords med värdet 5 för för den första variabeln och anger MinLength med värdet 8 för för den andra variabeln.
  3. Välj Granska + skapa för att verifiera och distribuera sedan containern.

Portalsida som visar miljövariabeln Aktivera knapp och textrutor

Om du vill visa containerns loggar väljer du Containrar under Inställningar och sedan Loggar. Precis som de utdata som visades i föregående CLI- och PowerShell-avsnitt kan du se hur skriptets beteende har ändrats av miljövariablerna. Endast fem ord visas, var och en med en minsta längd på åtta tecken.

Portal som visar utdata från containerloggar

Säkra värden

Objekt med säkra värden är avsedda att innehålla känslig information som lösenord eller nycklar för ditt program. Att använda säkra värden för miljövariabler är både säkrare och mer flexibelt än att inkludera det i containerns avbildning. Ett annat alternativ är att använda hemliga volymer som beskrivs i Montera en hemlig volym i Azure Container Instances.

Miljövariabler med säkra värden visas inte i containerns egenskaper – deras värden kan endast nås inifrån containern. Containeregenskaper som visas i Azure Portal eller Azure CLI visar till exempel bara en säker variabels namn, inte dess värde.

Ange en säker miljövariabel genom att secureValue ange egenskapen i stället för den vanliga value för variabelns typ. De två variablerna som definieras i följande YAML visar de två variabeltyperna.

YAML-distribution

Skapa en secure-env.yaml fil med följande kodfragment.

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

Kör följande kommando för att distribuera containergruppen med YAML (justera resursgruppens namn efter behov):

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

Verifiera miljövariabler

Kör kommandot az container show för att fråga containerns miljövariabler:

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

JSON-svaret visar både den osäkra miljövariabelns nyckel och värde, men bara namnet på variabeln säker miljö:

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

Med kommandot az container exec , som gör det möjligt att köra ett kommando i en container som körs, kan du kontrollera att variabeln säker miljö har angetts. Kör följande kommando för att starta en interaktiv bash-session i containern:

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

När du har öppnat ett interaktivt gränssnitt i containern kan du komma åt SECRET variabelns värde:

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

Nästa steg

Uppgiftsbaserade scenarier, till exempel batchbearbetning av en stor datamängd med flera containrar, kan dra nytta av anpassade miljövariabler vid körning. Mer information om hur du kör aktivitetsbaserade containrar finns i Köra containerbaserade aktiviteter med omstartsprinciper.