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. Den här funktionen 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-portalen.
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.
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. 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 ändrade 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:\
Exempel på Azure-portalen
Om du vill ange miljövariabler när du startar en container i Azure-portalen anger du dem på sidan Avancerat när du skapar containern.
- På sidan Avancerat anger du omstartsprincipen till På-fel
- Under Miljövariabler anger du
NumWords
med värdet5
för för den första variabeln och angerMinLength
med värdet8
för för den andra variabeln. - Välj Granska + skapa för att verifiera och distribuera sedan containern.
Om du vill visa containerns loggar väljer du Containrar under Inställningar och sedan Loggar. På samma sätt som de utdata som visas i föregående CLI- och PowerShell-avsnitt kan du se hur miljövariablerna ändrar skriptets beteende. Endast fem ord visas, var och en med en minsta längd på åtta tecken.
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. Till exempel visar containeregenskaper som visas i Azure-portalen eller Azure CLI endast namnet på en säker variabel, 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 för 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 för 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 öppnar 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
Aktivitetsbaserade 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.