Ange kommandoraden i en containerinstans för att åsidosätta standardkommandoradsåtgärden
När du skapar en containerinstans kan du välja att ange ett kommando för att åsidosätta standardkommandoradsinstruktionen som bakats i containeravbildningen. Det här beteendet liknar kommandoradsargumentet --entrypoint
till docker run
.
Precis som att ställa in miljövariabler för containerinstanser är det användbart att ange en startkommandorad för batchjobb där du behöver förbereda varje container dynamiskt med uppgiftsspecifik konfiguration.
Riktlinjer för kommandorad
Som standard anger kommandoraden en enda process som startar utan ett gränssnitt i containern. Kommandoraden kan till exempel köra ett Python-skript eller en körbar fil. Processen kan ange ytterligare parametrar eller argument.
Om du vill köra flera kommandon börjar du kommandoraden genom att ange en gränssnittsmiljö som stöds i containerns operativsystem. Exempel:
Operativsystem Standardgränssnitt Ubuntu /bin/bash
Alpine /bin/sh
Windows cmd
Följ gränssnittskonventionerna för att kombinera flera kommandon som ska köras i följd.
Beroende på containerkonfigurationen kan du behöva ange en fullständig sökväg till den körbara kommandoraden eller argumenten.
Ange en lämplig omstartsprincip för containerinstansen, beroende på om kommandoraden anger en långvarig aktivitet eller en körningsaktivitet. Till exempel rekommenderas en omstartsprincip
Never
för ellerOnFailure
för en körningsuppgift.Om du behöver information om standardinmatningspunkten i en containeravbildning använder du kommandot docker image inspect .
Kommandoradssyntax
Kommandoradssyntaxen varierar beroende på azure-API:et eller verktyget som används för att skapa instanserna. Om du anger en gränssnittsmiljö följer du även kommandosyntaxkonventionerna för gränssnittet.
az container create command: Skicka en sträng med parametern
--command-line
. Exempel:--command-line "python myscript.py arg1 arg2"
).Cmdleten New-AzureRmContainerGroup Azure PowerShell: Skicka en sträng med parametern
-Command
. Exempel:-Command "echo hello"
.Azure Portal: I egenskapen Åsidosättning av kommando för containerkonfigurationen anger du en kommaavgränsad lista med strängar utan citattecken. Exempel:
python, myscript.py, arg1, arg2
).Resource Manager mall eller YAML-fil, eller någon av Azure SDK:erna: Ange kommandoradsegenskapen som en matris med strängar. Exempel: JSON-matrisen
["python", "myscript.py", "arg1", "arg2"]
i en Resource Manager mall.Om du är bekant med Dockerfile-syntaxen liknar det här formatet cmd-instruktionens exec-form .
Exempel
Azure CLI | Portalen | Mall | |
---|---|---|---|
Enkelt kommando | --command-line "python myscript.py arg1 arg2" |
Åsidosättning av kommando: python, myscript.py, arg1, arg2 |
"command": ["python", "myscript.py", "arg1", "arg2"] |
Flera kommandon | --command-line "/bin/bash -c 'mkdir test; touch test/myfile; tail -f /dev/null'" |
Åsidosättning av kommando: /bin/bash, -c, mkdir test; touch test/myfile; tail -f /dev/null |
"command": ["/bin/bash", "-c", "mkdir test; touch test/myfile; tail -f /dev/null"] |
Azure CLI-exempel
Ändra till exempel beteendet för containerbilden microsoft/aci-wordcount , som analyserar text i Shakespeares Hamlet för att hitta de ord som förekommer oftast. I stället för att analysera Hamlet kan du ange en kommandorad som pekar på en annan textkälla.
Om du vill se utdata från containern microsoft/aci-wordcount när den analyserar standardtexten kör du den med följande az container create-kommando . Ingen startkommandorad har angetts, så standardkommandot för containern körs. I det här exemplet anges miljövariabler för att hitta de tre översta orden som är minst fem bokstäver långa:
az container create \
--resource-group myResourceGroup \
--name mycontainer1 \
--image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
--environment-variables NumWords=3 MinLength=5 \
--restart-policy OnFailure
När containerns tillstånd visas som Avslutat (använd az container show för att kontrollera tillstånd) visar du loggen med az containerloggar för att se utdata.
az container logs --resource-group myResourceGroup --name mycontainer1
[('HAMLET', 386), ('HORATIO', 127), ('CLAUDIUS', 120)]
Konfigurera nu en andra exempelcontainer för att analysera annan text genom att ange en annan kommandorad. Python-skriptet som körs av containern , wordcount.py, accepterar en URL som ett argument och bearbetar sidans innehåll i stället för standardvärdet.
För att till exempel fastställa de tre översta orden som är minst fem bokstäver långa i Romeo och Julia:
az container create \
--resource-group myResourceGroup \
--name mycontainer2 \
--image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
--restart-policy OnFailure \
--environment-variables NumWords=3 MinLength=5 \
--command-line "python wordcount.py http://shakespeare.mit.edu/romeo_juliet/full.html"
När containern har avslutats visar du återigen utdata genom att visa containerns loggar:
az container logs --resource-group myResourceGroup --name mycontainer2
[('ROMEO', 177), ('JULIET', 134), ('CAPULET', 119)]
Nästa steg
Uppgiftsbaserade scenarier, till exempel batchbearbetning av en stor datamängd med flera containrar, kan dra nytta av anpassade kommandorader vid körning. Mer information om hur du kör aktivitetsbaserade containrar finns i Köra containerbaserade aktiviteter med omstartsprinciper.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för