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

Şunlar için geçerlidir:IoT Edge 1.4 checkmark IoT Edge 1.4

Önemli

IoT Edge 1.4 desteklenen sürümdür. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

Dağıtım bildirimindeki createOptions parametresi, modül kapsayıcılarını çalışma zamanında yapılandırmanızı sağlar. Bu parametre modüller üzerindeki denetiminizi genişletir ve modülün konak cihazın kaynaklarına erişimine izin verme veya kısıtlama ya da ağ yapılandırma gibi görevlere izin verir.

IoT Edge modülleri, IoT Edge cihazınızda Docker uyumlu kapsayıcılar olarak uygulanır. Docker kapsayıcı oluşturmak için birçok seçenek sunar ve bu seçenekler IoT Edge modülleri 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 HostConfig.PortBindings parametresini kullanır.

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 yazabilirsiniz. Ardından uzantıyı kullanarak IoT Edge çözümünü derlediğinizde veya dağıtım bildirimini oluşturduğunuzda, JSON sizin için IoT Edge çalışma zamanının beklediği biçimde dizelenir. Ö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ı bakım modundadır. iotedgedev aracı, IoT Edge modülleri geliştirmek için önerilen araçtır.

Oluşturma seçeneklerini yazmak için bir ipucu, komutunu kullanmaktır docker inspect . Geliştirme sürecinizin bir parçası olarak kullanarak modülü yerel olarak docker run <container name>çalıştırın. Modülü istediğiniz şekilde ç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:

Screenshot of the results of the command docker inspect edgeHub.

Genel senaryolar

Kapsayıcı oluşturma seçenekleri birçok senaryoya olanak tanır, ancak IoT Edge çözümleri oluştururken en sık karşılaşılan bazı senaryolar şunlardır:

Konak bağlantı noktasını modül bağlantı noktasına eşleme

Modülünüzün IoT Edge çözümünün 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şlemeniz gerekir.

İpucu

Bu bağlantı noktası eşlemesi, aynı cihazda modülden modüle iletişim için 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. 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 içindeki bir EXPOSE yönergesini kullanarak yapabilirsiniz. Örneğin, EXPOSE 8080. Kullanıma sunma yönergesi, belirtilmezse varsayılan olarak TCP protokolüne sahiptir veya UDP belirtebilirsiniz.

Ardından, modüldeki kullanıma sunulan bağlantı noktasını konak cihazındaki bir bağlantı noktasına eşlemek için Docker kapsayıcısınınHostConfig grubundaki PortBindings ayarını kullanın. Örneğin, modülün içinde 8080 numaralı bağlantı noktasını kullanıma aldıysanız ve bunu konak cihazının 80 numaralı bağlantı noktasıyla 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 dizelendirildikten sonra, aynı yapılandırma aşağıdaki örneğe benzer olacaktır:

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

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

Bir modülün ne kadar ana bilgisayar kaynağı kullanabileceğini bildirebilirsiniz. Bu kontrol sayesinde bir modülün çok fazla bellek veya CPU kullanması ve diğer işlemlerin cihazda çalışması engellenebilir. HostConfig grubundaki Docker kapsayıcı oluşturma seçenekleriyle şu ayarları yönetebilirsiniz:

  • 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 olacaktır:

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

Son dağıtım bildirimi için dize eklendikten sonra bu değerler aşağıdaki örneğe benzer olacaktır:

"createOptions":"{\"HostConfig\":{\"Memory\":268435456,\"MemorySwap\":536870912,\"CpuPeriod\":25000}}"

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

IoT Edge modülünüzü GPU için iyileştirilmiş bir sanal makinede çalıştırıyorsanız, GPU'nuza bağlanmak için bir IoT Edge modülünü de etkinleştirebilirsiniz. Bunu mevcut bir modülle yapmak için , öğesine createOptionsbazı belirtimler ekleyin:

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

Bu ayarların başarıyla eklendiğini onaylamak için Docker inspect komutunu kullanarak JSON çıktısındaki yeni ayarı görü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

Eylemdeki oluşturma seçeneklerine ilişkin diğer örnekler için aşağıdaki IoT Edge örneklerine bakın: