Dela via


Ange kommandoraden i en containerinstans för att åsidosätta standardkommandoradsåtgärden

När du skapar en containerinstans kan du ange ett kommando för att åsidosätta standardkommandoradsinstruktionen som bakats in i containeravbildningen. Det här beteendet liknar kommandoradsargumentet --entrypoint till docker run.

Precis som att ange 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 påbörjar du kommandoraden genom att ange en gränssnittsmiljö som stöds i containeroperativsystemet. Exempel:

    Operativsystem Standardgränssnitt
    Ubuntu /bin/bash
    Alpine /bin/sh
    Windows cmd

    Följ konventionerna i gränssnittet 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 tidskrävande uppgift eller en körningsaktivitet. Till exempel rekommenderas en omstartsprincip Never för eller OnFailure för en körningsaktivitet.

  • Om du behöver information om standardinmatningspunkten i en containeravbildning använder du kommandot docker image inspect .

Kommandoradssyntax

Syntaxen för kommandoraden varierar beroende på azure-API:et eller verktyget som används för att skapa instanserna. Om du anger en gränssnittsmiljö bör du även se 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").

  • New-AzContainerGroup Azure PowerShell-cmdlet: Skicka en sträng med parametern -Command . Exempel: -Command "echo hello".

  • Azure Portal: I Egenskapen åsidosätt kommando för containerkonfigurationen, ange en kommaavgränsad lista med strängar utan citattecken. Exempel: python, myscript.py, arg1, arg2).

  • Resource Manager-mallen eller YAML-filen 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 Portal Mall
Enda 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 oftast förekommer. 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å standardcontainerkommandot 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

Aktivitetsbaserade 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.