Dela via


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 eller OnFailure 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.