Mengatur baris perintah dalam instans kontainer untuk mengesampingkan operasi baris perintah default

Saat Anda membuat instans kontainer, secara opsional tentukan perintah untuk mengesampingkan instruksi baris perintah default yang dimasukkan ke dalam citra kontainer. Perilaku ini mirip dengan argumen baris perintah --entrypoint ke docker run.

Seperti mengatur variabel lingkungan untuk instans kontainer, menentukan baris perintah awal berguna untuk pekerjaan batch di mana Anda perlu menyiapkan setiap kontainer secara dinamis dengan konfigurasi khusus tugas.

Panduan baris perintah

  • Secara default, baris perintah menentukan satu proses yang dimulai tanpa shell dalam kontainer. Misalnya, baris perintah mungkin menjalankan skrip Python atau file yang dapat dieksekusi. Proses ini dapat menentukan parameter atau argumen tambahan.

  • Untuk menjalankan beberapa perintah, mulai baris perintah Anda dengan mengatur lingkungan shell yang didukung dalam sistem operasi kontainer. Contoh:

    Sistem operasi Shell default
    Ubuntu /bin/bash
    Alpine /bin/sh
    Windows cmd

    Ikuti konvensi shell untuk menggabungkan beberapa perintah untuk dijalankan secara berurutan.

  • Bergantung pada konfigurasi kontainer, Anda mungkin perlu mengatur jalur lengkap ke baris perintah yang dapat dieksekusi atau argumen.

  • Atur kebijakan mulai ulang yang sesuai untuk instans kontainer, bergantung pada apakah baris perintah menentukan tugas yang berjalan lama atau tugas yang berjalan satu kali. Misalnya, kebijakan mulai ulang Never atau OnFailure disarankan untuk tugas yang berjalan satu kali.

  • Jika Anda memerlukan informasi tentang entrypoint default yang diatur dalam citra kontainer, gunakan perintah docker image inspect.

Sintaks baris perintah

Sintaks baris perintah bervariasi tergantung pada Azure API atau alat yang digunakan untuk membuat instans. Jika Anda menentukan lingkungan shell, amati juga konvensi sintaks perintah shell.

  • Perintah az container create: Loloskan untai dengan parameter --command-line. Contoh: --command-line "python myscript.py arg1 arg2").

  • Cmdlet Azure PowerShell New-AzureRmContainerGroup: Loloskan untai dengan parameter -Command. Contoh: -Command "echo hello".

  • Portal Microsoft Azure: Di properti Ambil alih perintah dari konfigurasi kontainer, berikan daftar untai yang dipisahkan koma, tanpa tanda kutip. Contoh: python, myscript.py, arg1, arg2).

  • Templat Resource Manager atau file YAML, atau salah satu SDK Azure: Tentukan properti baris perintah sebagai array string. Contoh: array JSON ["python", "myscript.py", "arg1", "arg2"] dalam templat Resource Manager.

    Jika Anda terbiasa dengan sintaks Dockerfile, format ini mirip dengan bentuk exec dari instruksi CMD.

Contoh

Azure CLI Portal Templat
Perintah tunggal --command-line "python myscript.py arg1 arg2" Ambil alih perintah: python, myscript.py, arg1, arg2 "command": ["python", "myscript.py", "arg1", "arg2"]
Beberapa perintah --command-line "/bin/bash -c 'mkdir test; touch test/myfile; tail -f /dev/null'" Ambil alih perintah: /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"]

Contoh Azure CLI

Sebagai contoh, ubah perilaku gambar kontainer microsoft/aci-wordcount, yang menganalisis teks di Hamlet karya Shakespeare untuk menemukan kata-kata yang paling sering muncul. Alih-alih menganalisis Hamlet, Anda dapat mengatur baris perintah yang menunjuk ke sumber teks yang berbeda.

Untuk melihat output kontainer microsoft/aci-wordcount saat menganalisis teks default, jalankan dengan perintah az container create berikut. Tidak ada baris perintah mulai yang ditentukan, sehingga perintah kontainer default berjalan. Untuk tujuan ilustrasi, contoh ini mengatur variabel lingkungan untuk menemukan 3 kata teratas yang panjangnya minimal lima huruf:

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

Setelah status kontainer ditampilkan sebagai Dihentikan (gunakan perintah az container show untuk memeriksa status), tampilkan log dengan perintah az container logs untuk melihat outputnya.

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

Sekarang siapkan kontainer contoh kedua untuk menganalisis teks yang berbeda dengan menentukan baris perintah yang berbeda. Skrip Python yang dijalankan oleh kontainer, wordcount.py, menerima URL sebagai argumen, dan memproses konten halaman itu, bukan default.

Misalnya, untuk menentukan 3 kata teratas yang panjangnya minimal lima huruf di Romeo dan 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"

Sekali lagi, setelah kontainer Dihentikan, lihat output dengan menampilkan log kontainer:

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

Langkah berikutnya

Skenario berbasis tugas, seperti pemrosesan batch himpunan data besar dengan beberapa kontainer, dapat memanfaatkan baris perintah kustom saat runtime. Untuk informasi selengkapnya tentang menjalankan kontainer berbasis tugas, lihat Menjalankan tugas kontainer dengan kebijakan mulai ulang.