Impostare la riga di comando in un'istanza del contenitore per eseguire l'override dell'operazione della riga di comando predefinita

Quando si crea un'istanza del contenitore, specificare facoltativamente un comando per eseguire l'override dell'istruzione della riga di comando predefinita creata nell'immagine del contenitore. Questo comportamento è simile all'argomento della --entrypoint riga di comando a docker run.

Analogamente all'impostazione delle variabili di ambiente per le istanze del contenitore, la specifica di una riga di comando iniziale è utile per i processi batch in cui è necessario preparare ogni contenitore in modo dinamico con una configurazione specifica dell'attività.

Linee guida della riga di comando

  • Per impostazione predefinita, la riga di comando specifica un singolo processo che inizia senza una shell nel contenitore. Ad esempio, la riga di comando potrebbe eseguire uno script Python o un file eseguibile. Il processo può specificare parametri o argomenti aggiuntivi.

  • Per eseguire più comandi, iniziare la riga di comando impostando un ambiente shell supportato nel sistema operativo contenitore. Esempi:

    Sistema operativo Shell predefinita
    Ubuntu /bin/bash
    Alpine /bin/sh
    Windows cmd

    Seguire le convenzioni della shell per combinare più comandi da eseguire in sequenza.

  • A seconda della configurazione del contenitore, potrebbe essere necessario impostare un percorso completo sull'eseguibile della riga di comando o sugli argomenti.

  • Impostare un criterio di riavvio appropriato per l'istanza del contenitore, a seconda che la riga di comando specifica un'attività a esecuzione prolungata o un'attività run-once. Ad esempio, un criterio di riavvio di Never o OnFailure è consigliato per un'attività run-once.

  • Se sono necessarie informazioni sul punto di ingresso predefinito impostato in un'immagine del contenitore, usare il comando di controllo dell'immagine docker .

Sintassi della riga di comando

La sintassi della riga di comando varia a seconda dell'API o dello strumento di Azure usato per creare le istanze. Se si specifica un ambiente shell, osservare anche le convenzioni di sintassi dei comandi della shell.

  • az container create command: passare una stringa con il --command-line parametro . Esempio: --command-line "python myscript.py arg1 arg2").

  • New-AzureRmContainerGroup Azure PowerShell cmdlet: Passare una stringa con il -Command parametro . Esempio: -Command "echo hello".

  • portale di Azure: nella proprietà Command override della configurazione del contenitore specificare un elenco delimitato da virgole di stringhe, senza virgolette. Esempio: python, myscript.py, arg1, arg2).

  • Resource Manager modello o file YAML o uno degli SDK di Azure: specificare la proprietà della riga di comando come matrice di stringhe. Esempio: matrice ["python", "myscript.py", "arg1", "arg2"] JSON in un modello di Resource Manager.

    Se si ha familiarità con la sintassi Dockerfile , questo formato è simile al formato exec dell'istruzione CMD.

Esempio

Interfaccia della riga di comando di Azure Portale Modello
Comando singolo --command-line "python myscript.py arg1 arg2" Override del comando: python, myscript.py, arg1, arg2 "command": ["python", "myscript.py", "arg1", "arg2"]
Più comandi --command-line "/bin/bash -c 'mkdir test; touch test/myfile; tail -f /dev/null'" Override del comando: /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"]

Esempio di interfaccia della riga di comando di Azure

Ad esempio, modificare il comportamento dell'immagine contenitore microsoft/aci-wordcount , che analizza il testo nell'Amleto di Shakespeare per trovare le parole più frequenti. Anziché analizzare Hamlet, è possibile impostare una riga di comando che punta a un'origine di testo diversa.

Per visualizzare l'output del contenitore microsoft/aci-wordcount quando analizza il testo predefinito, eseguirlo con il comando az container create seguente. Non viene specificata alcuna riga di comando start, quindi viene eseguito il comando contenitore predefinito. Ai fini dell'illustrazione, questa esempio imposta le variabili di ambiente per trovare le prime 3 parole che sono almeno cinque lettere lunghe:

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

Dopo che lo stato del contenitore viene visualizzato come Terminato (usare az container show per controllare lo stato), visualizzare il log con az container logs per visualizzare l'output.

az container logs --resource-group myResourceGroup --name mycontainer1
[('HAMLET', 386), ('HORATIO', 127), ('CLAUDIUS', 120)]

Configurare ora un secondo contenitore di esempio per analizzare testo diverso specificando una riga di comando diversa. Lo script Python eseguito dal contenitore, wordcount.py, accetta un URL come argomento e elabora il contenuto della pagina anziché il valore predefinito.

Ad esempio, per determinare le prime 3 parole che sono almeno cinque lettere lunghe in Romeo e 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"

Di nuovo, quando il contenitore mostra lo stato Terminato, visualizzare l'output tramite la visualizzazione dei log del contenitore:

az container logs --resource-group myResourceGroup --name mycontainer2
[('ROMEO', 177), ('JULIET', 134), ('CAPULET', 119)]

Passaggi successivi

Gli scenari basati su attività, ad esempio l'elaborazione batch di un set di dati di grandi dimensioni con diversi contenitori, possono trarre vantaggio dalle righe di comando personalizzate in fase di esecuzione. Per altre informazioni sull'esecuzione di contenitori basati su attività, vedere Eseguire attività in contenitori con criteri di riavvio.