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í. Tato funkce je podobná 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 spustíte rozhraní příkazového řádku v prostředí Bash nebo v 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.
- Na stránce Upřesnit nastavte zásadu restartování na Hodnotu Při selhání.
- V části Proměnné prostředí zadejte
NumWords
hodnotu5
první proměnné a zadejteMinLength
hodnotu8
druhé proměnné. - Vyberte Zkontrolovat a vytvořit a ověřte a pak kontejner nasaďte.
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 proměnné prostředí mění chování skriptu. Zobrazí se pouze pět slov s minimální délkou osmi znaků.
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 je 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, 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í.