Stel de opdrachtregel in een containerinstantie in om de standaard opdrachtregelbewerking te overschrijven
Wanneer u een containerinstantie maakt, geeft u desgewenst een opdracht op om de standaardopdrachtregelinstructie te overschrijven die in de containerinstallatiekopie is gebakken. Dit gedrag is vergelijkbaar met het --entrypoint
opdrachtregelargument met docker run
.
Net als bij het instellen van omgevingsvariabelen voor containerinstanties is het opgeven van een opdrachtregel handig voor batchtaken waarbij u elke container dynamisch moet voorbereiden met taakspecifieke configuratie.
Richtlijnen voor opdrachtregels
Standaard geeft de opdrachtregel één proces op dat wordt gestart zonder een shell in de container. De opdrachtregel kan bijvoorbeeld een Python-script of uitvoerbaar bestand uitvoeren. Het proces kan aanvullende parameters of argumenten opgeven.
Als u meerdere opdrachten wilt uitvoeren, start u de opdrachtregel door een shell-omgeving in te stellen die wordt ondersteund in het containerbesturingssysteem. Voorbeelden:
Besturingssysteem Standaardshell Ubuntu /bin/bash
Alpine /bin/sh
Windows cmd
Volg de conventies van de shell om meerdere opdrachten op volgorde uit te voeren.
Afhankelijk van de containerconfiguratie moet u mogelijk een volledig pad instellen op het uitvoerbare opdrachtregelbestand of de argumenten.
Stel een geschikt beleid voor opnieuw opstarten in voor het containerexemplaren, afhankelijk van of de opdrachtregel een langlopende taak of een run-once-taak aangeeft. Een beleid voor opnieuw opstarten van
Never
ofOnFailure
wordt bijvoorbeeld aanbevolen voor een run-once-taak.Als u informatie nodig hebt over de standaardinvoerpuntset in een containerinstallatiekopieën, gebruikt u de opdracht docker-installatiekopieën controleren .
Syntaxis voor opdrachtregel
De syntaxis van de opdrachtregel varieert afhankelijk van de Azure-API of het hulpprogramma dat wordt gebruikt om de exemplaren te maken. Als u een shell-omgeving opgeeft, moet u ook de syntaxisconventies van de opdracht van de shell observeren.
az container create command: Geef een tekenreeks door met de
--command-line
parameter. Voorbeeld:--command-line "python myscript.py arg1 arg2"
).Cmdlet New-AzContainerGroup Azure PowerShell: Geef een tekenreeks door met de
-Command
parameter. Voorbeeld:-Command "echo hello"
.Azure Portal: Geef in de eigenschap Command override van de containerconfiguratie een door komma's gescheiden lijst met tekenreeksen op, zonder aanhalingstekens. Voorbeeld:
python, myscript.py, arg1, arg2
).Resource Manager-sjabloon of YAML-bestand of een van de Azure SDK's: geef de opdrachtregeleigenschap op als een matrix met tekenreeksen. Voorbeeld: de JSON-matrix
["python", "myscript.py", "arg1", "arg2"]
in een Resource Manager-sjabloon.Als u bekend bent met de syntaxis van Dockerfile, is deze indeling vergelijkbaar met de exec-vorm van de CMD-instructie.
Voorbeelden
Azure-CLI | Portal | Sjabloon | |
---|---|---|---|
Eén opdracht | --command-line "python myscript.py arg1 arg2" |
Overschrijven van opdracht: python, myscript.py, arg1, arg2 |
"command": ["python", "myscript.py", "arg1", "arg2"] |
Meerdere opdrachten | --command-line "/bin/bash -c 'mkdir test; touch test/myfile; tail -f /dev/null'" |
Overschrijven van opdracht: /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-voorbeeld
Wijzig bijvoorbeeld het gedrag van de containerinstallatiekopieën van Microsoft/aci-wordcount, waarmee tekst in Shakespeare's Hamlet wordt geanalyseerd om de meest voorkomende woorden te vinden. In plaats van Hamlet te analyseren, kunt u een opdrachtregel instellen die verwijst naar een andere tekstbron.
Als u de uitvoer van de container microsoft/aci-wordcount wilt zien wanneer deze de standaardtekst analyseert, voert u deze uit met de volgende opdracht az container create . Er is geen opdrachtregel voor starten opgegeven, dus de standaardcontaineropdracht wordt uitgevoerd. Ter illustratie stelt dit voorbeeld omgevingsvariabelen in om de drie bovenste drie woorden te vinden die ten minste vijf letters lang zijn:
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
Zodra de status van de container wordt weergegeven als Beëindigd (gebruik az container show to check state), geeft u het logboek weer met az container logs om de uitvoer te zien.
az container logs --resource-group myResourceGroup --name mycontainer1
[('HAMLET', 386), ('HORATIO', 127), ('CLAUDIUS', 120)]
Stel nu een tweede voorbeeldcontainer in om verschillende tekst te analyseren door een andere opdrachtregel op te geven. Het Python-script dat wordt uitgevoerd door de container, wordcount.py, accepteert een URL als argument en verwerkt de inhoud van die pagina in plaats van de standaardinstelling.
Als u bijvoorbeeld de drie belangrijkste woorden wilt bepalen die ten minste vijf letters lang zijn in Romeo en Juliet:
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"
Nadat de container is beëindigd, bekijkt u de uitvoer door de logboeken van de container weer te geven:
az container logs --resource-group myResourceGroup --name mycontainer2
[('ROMEO', 177), ('JULIET', 134), ('CAPULET', 119)]
Volgende stappen
Op taken gebaseerde scenario's, zoals batchverwerking van een grote gegevensset met verschillende containers, kunnen tijdens runtime profiteren van aangepaste opdrachtregels. Zie Containertaken uitvoeren met beleid voor opnieuw opstarten voor meer informatie over het uitvoeren van op taken gebaseerde containers.