Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
IoT Edge 1.5
Penting
IoT Edge 1.5 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai per 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.
Parameter createOptions dalam manifes penyebaran memungkinkan Anda mengonfigurasi kontainer modul pada waktu proses. Parameter ini memperluas kontrol Anda atas modul dan memungkinkan Anda melakukan tugas seperti membatasi akses modul ke sumber daya perangkat host atau mengonfigurasi jaringan.
Modul IoT Edge berjalan sebagai kontainer yang kompatibel dengan Docker di perangkat IoT Edge Anda. Docker menawarkan banyak opsi untuk membuat kontainer, dan opsi tersebut juga berlaku untuk modul IoT Edge. Untuk informasi selengkapnya, lihat Opsi membuat kontainer Docker.
Opsi buat format
Manifes penyebaran IoT Edge menerima opsi buat yang diformat sebagai JSON. Misalnya, ambil opsi buat yang disertakan secara otomatis untuk setiap modul edgeHub:
"createOptions": {
"HostConfig": {
"PortBindings": {
"5671/tcp": [
{
"HostPort": "5671"
}
],
"8883/tcp": [
{
"HostPort": "8883"
}
],
"443/tcp": [
{
"HostPort": "443"
}
]
}
}
}
Contoh edgeHub ini menggunakan parameter HostConfig.PortBindings untuk memetakan port yang diekspos pada kontainer ke port pada perangkat host.
Jika Anda menggunakan ekstensi Azure IoT Edge untuk Visual Studio atau Visual Studio Code, tulis opsi buat dalam format JSON dalam file deployment.template.json . Kemudian, ketika Anda menggunakan ekstensi untuk membangun solusi IoT Edge atau menghasilkan manifes penempatan, ekstensi tersebut mengubah JSON menjadi format yang diharapkan oleh runtime IoT Edge. Contohnya:
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
Penting
Ekstensi Azure IoT Edge Visual Studio Code berada dalam mode pemeliharaan. Alat iotedgedev adalah alat yang direkomendasikan untuk mengembangkan modul IoT Edge.
Gunakan perintah docker inspect untuk menulis pilihan pembuatan. Jalankan modul secara lokal menggunakan docker run <container name> sebagai bagian dari proses pengembangan Anda. Setelah Anda memiliki modul bekerja seperti yang Anda inginkan, jalankan docker inspect <container name>. Perintah ini menghasilkan detail modul dalam format JSON. Temukan parameter yang Anda konfigurasi dan salin JSON. Contohnya:
Skenario umum
Opsi pembuatan kontainer mendukung berbagai skenario. Berikut adalah yang paling umum untuk membangun solusi IoT Edge:
- Berikan kepada modul akses ke penyimpanan host
- Petakan port host ke port modul
- Membatasi memori modul dan penggunaan CPU
- GPU-mengoptimalkan modul IoT Edge
Petakan port host ke port modul
Jika modul Anda perlu berkomunikasi dengan layanan di luar solusi IoT Edge, dan tidak menggunakan perutean pesan untuk melakukannya, maka Anda perlu memetakan port host ke port modul.
Petunjuk / Saran
Pemetaan port tidak diperlukan untuk komunikasi modul-ke-modul pada perangkat yang sama. Jika modul A perlu mengkueri API yang dihosting pada modul B, modul tersebut dapat melakukannya tanpa pemetaan port apa pun. Modul B perlu mengekspos port di dockerfile-nya. Contohnya,EXPOSE 8080. Kemudian, modul A dapat mengkueri API menggunakan nama modul B. Contohnya,http://ModuleB:8080/api.
Pertama, pastikan bahwa port di dalam modul terekspos untuk mendengarkan koneksi. Anda dapat melakukan ini menggunakan instruksi EXPOSE di dockerfile. Contohnya,EXPOSE 8080. Instruksi ekspose default ke protokol TCP jika tidak ditentukan, atau Anda dapat menentukan UDP.
Kemudian, gunakan pengaturan PortBindings di grup HostConfig dari opsi buat kontainer Docker untuk memetakan port yang terbuka dalam modul ke port pada perangkat host. Misalnya, jika Anda mengekspos port 8080 di dalam modul dan ingin memetakannya ke port 80 perangkat host, opsi buat di file template.json akan terlihat seperti contoh berikut:
"createOptions": {
"HostConfig": {
"PortBindings": {
"8080/tcp": [
{
"HostPort": "80"
}
]
}
}
}
Ketika dikonversi menjadi string untuk manifes penyebaran, konfigurasi terlihat seperti ini:
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"80\"}]}}}"
Membatasi memori modul dan penggunaan CPU
Nyatakan berapa banyak sumber daya host yang dapat digunakan modul. Kontrol ini memastikan bahwa satu modul tidak mengonsumsi terlalu banyak memori atau CPU, mencegah proses lain berjalan pada perangkat. Anda dapat mengelola pengaturan ini dengan opsi buat kontainer Docker di grup HostConfig, termasuk:
- Memori: Batas memori dalam byte. Misalnya, 268435456 byte = 256 MB.
- MemorySwap: Total batas memori (memori + swap). Misalnya, byte 536870912 = 512 MB.
- NanoCpus: Kuota CPU dalam satuan CPU 10-9 (1 miliar). Misalnya, 250000000 nanocpus = 0,25 CPU.
Dalam format template.json, nilai-nilai ini akan terlihat seperti contoh berikut:
"createOptions": {
"HostConfig": {
"Memory": 268435456,
"MemorySwap": 536870912,
"NanoCpus": 250000000
}
}
Setelah dirangkai untuk manifes penyebaran terakhir, nilai ini akan terlihat seperti contoh berikut:
"createOptions":"{\"HostConfig\":{\"Memory\":268435456,\"MemorySwap\":536870912,\"CpuPeriod\":25000}}"
GPU-mengoptimalkan modul IoT Edge
Jika Anda menjalankan modul IoT Edge pada komputer virtual yang dioptimalkan GPU, Anda juga dapat mengaktifkan modul IoT Edge untuk terhubung ke GPU Anda. Untuk melakukan ini dengan modul yang ada, tambahkan beberapa spesifikasi ke :createOptions
{"HostConfig": {"DeviceRequests": [{"Count": -1,"Capabilities": [["gpu"]]}]}}
Konfirmasikan pengaturan ini dengan menggunakan perintah inspeksi Docker untuk melihat pengaturan baru dalam cetakan JSON.
sudo docker inspect <YOUR-MODULE-NAME>
Untuk mempelajari selengkapnya tentang cara perangkat dan komputer virtual Anda terhubung ke GPU, lihat Mengonfigurasi, menyambungkan, dan memverifikasi modul IoT Edge untuk GPU.
Langkah berikutnya
Untuk contoh selengkapnya tentang membuat opsi dalam tindakan, lihat sampel IoT Edge ini: