IoT Edge modülleri için kapsayıcı oluşturma seçeneklerini yapılandırma

Şunun için geçerlidir:IoT Edge 1.6 onay işareti IoT Edge 1.6

Önemli

IoT Edge 1.6 LTS desteklenen sürümdür. IoT Edge 1.5 LTS desteği 10 Kasım 2026'da sona erer; IoT Edge 1.4 LTS, 12 Kasım 2024'te ömrünün sonuna ulaştı. Önceki bir sürümü kullanıyorsanız bkz. Update IoT Edge.

createOptions Çalışma zamanında modül kapsayıcılarını yapılandırmak için dağıtım bildirimindeki parametresini kullanın. Bu parametreyi kullanarak modülün konak cihazının kaynaklarına erişimini kısıtlayabilir veya ağı yapılandırabilirsiniz.

IoT Edge modülleri IoT Edge cihazınızda Docker uyumlu kapsayıcılar olarak çalışır. Docker kapsayıcı oluşturmak için birçok seçenek sunar ve bu seçenekler IoT Edge modüller için de geçerlidir. Daha fazla bilgi için bkz . Docker kapsayıcı oluşturma seçenekleri.

Biçim oluşturma seçenekleri

IoT Edge dağıtım bildirimi, JSON olarak biçimlendirilmiş oluşturma seçeneklerini kabul eder. Örneğin, her edgeHub modülü için otomatik olarak eklenen oluşturma seçeneklerini inceleyin:

"createOptions": {
  "HostConfig": {
    "PortBindings": {
      "5671/tcp": [
        {
          "HostPort": "5671"
        }
      ],
      "8883/tcp": [
        {
          "HostPort": "8883"
        }
      ],
      "443/tcp": [
        {
          "HostPort": "443"
        }
      ]
    }
  }
}

Bu edgeHub örneği, kapsayıcıdaki kullanıma sunulan bağlantı noktalarını konak cihazındaki bir bağlantı noktasına eşlemek için parametresini kullanır HostConfig.PortBindings .

Visual Studio veya Visual Studio Code için Azure IoT Edge uzantısını kullanıyorsanız oluşturma seçeneklerini deployment.template.json dosyasına JSON biçiminde yazın. IoT Edge çözümünü oluşturmak veya dağıtım tanımını üretmek için uzantıyı kullandığınızda, JSON'u IoT Edge çalışma zamanının beklediği biçimde bir dizeye dönüştürür. Örneğin:

"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"

Önemli

Azure IoT Edge Visual Studio Code uzantısı maintenance modunda. iotedgedev aracı, IoT Edge modülleri geliştirmek için önerilen araçtır.

docker inspect Oluşturma seçeneklerini yazmak için komutunu kullanın. Geliştirme sürecinizin bir parçası olarak kullanarak docker run <container name> modülü yerel olarak çalıştırın. Modülü istediğiniz gibi çalıştırdıktan sonra komutunu çalıştırın docker inspect <container name>. Bu komut, modül ayrıntılarını JSON biçiminde görüntüler. Yapılandırdığınız parametreleri bulun ve JSON'u kopyalayın. Örneğin:

Docker inspect edgeHub komutunun sonuçlarının ekran görüntüsü.

Genel senaryolar

Kapsayıcı oluşturma seçenekleri çeşitli senaryoları destekler. IoT Edge çözümleri oluşturmaya yönelik en yaygın çözümler şunlardır:

Host portunu modül portuyla eşleme

Modülünüzün IoT Edge çözümü dışındaki bir hizmetle iletişim kurması gerekiyorsa ve bunu yapmak için ileti yönlendirme kullanmıyorsa, bir konak bağlantı noktasını modül bağlantı noktasına eşleyin.

İpucu

Aynı cihazda modülden modüle iletişim için bağlantı noktası eşlemesi gerekli değildir. A modülünün B modülünde barındırılan bir API'yi sorgulaması gerekiyorsa, bunu herhangi bir bağlantı noktası eşlemesi olmadan yapabilir. B modülünün dockerfile içindeki bir bağlantı noktasını kullanıma sunması gerekir. Örneğin, EXPOSE 8080 öğesini açığa çıkarır. Ardından, A modülü B modülünün adını kullanarak API'yi sorgulayabilir; örneğin, http://ModuleB:8080/api.

İlk olarak, bağlantıları dinlemek için modülün içindeki bir bağlantı noktasının kullanıma sunulduğundan emin olun. Bunu dockerfile dosyasında bir EXPOSE yönergesi kullanarak yapabilirsiniz; örneğin, EXPOSE 8080. Bir protokol belirtmezseniz veya UDP belirtebiliyorsanız, kullanıma sunma yönergesi varsayılan olarak TCP protokolüne ayarlı olur.

Ardından, modüldeki açık bağlantı noktasını konak cihazındaki bir bağlantı noktasına eşlemek için PortBindings içindeki HostConfig ayarını kullanın. Örneğin, modülün içinde 8080 numaralı bağlantı noktasını kullanıma aldıysanız ve bu bağlantı noktasını konak cihazdaki 80 numaralı bağlantı noktasına eşlemek istiyorsanız, template.json dosyasındaki oluşturma seçenekleri aşağıdaki örneğe benzer olacaktır:

"createOptions": {
  "HostConfig": {
    "PortBindings": {
      "8080/tcp": [
        {
          "HostPort": "80"
        }
      ]
    }
  }
}

Dağıtım bildirimi için dizelendirildiğinde yapılandırma şöyle görünür:

"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"80\"}]}}}"

Modül belleğini ve CPU kullanımını kısıtlama

Bir modülün konak kaynaklarının ne kadarını kullanabileceğini bildirin. Bu denetim, bir modülün çok fazla bellek veya CPU kullanmamasını sağlayarak diğer işlemlerin cihazda çalışmasını önler. Bu ayarları, gruptaki Docker kapsayıcı oluşturma seçenekleriniHostConfig kullanarak yönetebilirsiniz, örneğin:

  • Bellek: Bayt cinsinden bellek sınırı. Örneğin, 268435456 bayt = 256 MB.
  • MemorySwap: Toplam bellek sınırı (bellek + değiştirme). Örneğin, 536870912 bayt = 512 MB.
  • NanoCpus: 10-9 (1 milyar) CPU birimi cinsinden CPU kotası. Örneğin, 250000000 nanocpus = 0,25 CPU.

template.json biçiminde, bu değerler aşağıdaki örneğe benzer:

"createOptions": {
  "HostConfig": {
    "Memory": 268435456,
    "MemorySwap": 536870912,
    "NanoCpus": 250000000
  }
}

Son dağıtım bildirimi için dizelendirildikten sonra, bu değerler aşağıdaki örneğe benzer:

"createOptions":"{\"HostConfig\":{\"Memory\":268435456,\"MemorySwap\":536870912,\"NanoCpus\":250000000}}"

IoT Edge modülünü GPU ile iyileştirme

IoT Edge modülünüzü GPU için iyileştirilmiş bir sanal makinede çalıştırırsanız, GPU'nuza bağlanmak için bir IoT Edge modülünü de etkinleştirebilirsiniz. Var olan bir modülü kullanarak bu bağlantıyı yapmak için , öğesine createOptionsbazı belirtimler ekleyin:

{"HostConfig": {"DeviceRequests": [{"Count": -1,"Capabilities": [["gpu"]]}]}}

Yeni ayarı bir JSON çıktısında görüntülemek için Docker inspect komutunu kullanarak bu ayarları onaylayın:

sudo docker inspect <YOUR-MODULE-NAME>

Cihazınızın ve sanal makinenizin GPU'ya nasıl bağlandığını öğrenmek için bkz. Gpu için IoT Edge modülünü yapılandırma, bağlama ve doğrulama.

Sonraki adımlar

İşlemdeki oluşturma seçeneklerine ilişkin diğer örnekler için şu IoT Edge örneklerine bakın: