Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
IoT Edge 1.5
Importante
O IoT Edge 1.5 LTS é a versão com suporte. O IoT Edge 1.4 LTS chegou ao fim de sua vida útil em 12 de novembro de 2024. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.
O parâmetro createOptions no manifesto de implantação permite configurar os contêineres do módulo em runtime. Esse parâmetro expande seu controle sobre os módulos e permite que você execute tarefas como restringir o acesso do módulo aos recursos do dispositivo host ou configurar a rede.
Os módulos do IoT Edge são executados como contêineres compatíveis com Docker em seu dispositivo IoT Edge. O Docker oferece muitas opções para criar contêineres e essas opções também se aplicam aos módulos do IoT Edge. Para saber mais, confira Opções de criação de contêiner do Docker.
Opções de criação de formato
O manifesto de implantação do IoT Edge aceita opções de criação formatadas como JSON. Por exemplo, use as opções de criação incluídas automaticamente para cada módulo do edgeHub:
"createOptions": {
"HostConfig": {
"PortBindings": {
"5671/tcp": [
{
"HostPort": "5671"
}
],
"8883/tcp": [
{
"HostPort": "8883"
}
],
"443/tcp": [
{
"HostPort": "443"
}
]
}
}
}
Este exemplo de edgeHub usa o parâmetro HostConfig.PortBindings para mapear portas expostas no contêiner para uma porta no dispositivo host.
Se você usar a extensão do Azure IoT Edge para Visual Studio ou Visual Studio Code, escreva as opções de criação no formato JSON no arquivo deployment.template.json . Em seguida, quando você usa a extensão para criar a solução do IoT Edge ou gerar o manifesto de implantação, ela stringifica o JSON no formato esperado pelo runtime do IoT Edge. Por exemplo:
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
Importante
A extensão do Azure IoT Edge Visual Studio Code está em modo de manutenção. A ferramenta iotedgedev é a ferramenta recomendada para desenvolver módulos do IoT Edge.
Use o docker inspect comando para gravar opções de criação. Execute o módulo localmente usando docker run <container name> como parte do processo de desenvolvimento. Depois que o módulo estiver funcionando da maneira desejada, execute docker inspect <container name>. Esse comando gera os detalhes do módulo no formato JSON. Localize os parâmetros configurados e copie o JSON. Por exemplo:
Cenários comuns
As opções de criação de contêiner dão suporte a vários cenários. Aqui estão as mais comuns para criar soluções do IoT Edge:
- Permita que os módulos acessem o armazenamento do host
- Mapear a porta do host para a porta do módulo
- Restringir o uso da memória do módulo e da CPU
- Otimizar GPU de um módulo do IoT Edge
Mapear a porta do host para a porta do módulo
Se o seu módulo precisar se comunicar com um serviço fora da solução do IoT Edge e não estiver usando o roteamento de mensagens para fazer isso, você precisará mapear uma porta de host para uma porta de módulo.
Dica
O mapeamento de porta não é necessário para comunicação módulo a módulo no mesmo dispositivo. Se o módulo A precisar consultar uma API hospedada no módulo B, ele poderá fazer isso sem qualquer mapeamento de porta. O módulo B precisa expor uma porta em seu dockerfile. Por exemplo, EXPOSE 8080. Em seguida, o módulo A pode consultar a API usando o nome do módulo B. Por exemplo, http://ModuleB:8080/api.
Primeiro, verifique se uma porta dentro do módulo é exposta para escutar conexões. Você pode fazer isso usando uma instrução EXPOSE no dockerfile. Por exemplo, EXPOSE 8080. A instrução expose usa como padrão o protocolo TCP, se não for especificado, ou você pode especificar o UDP.
Em seguida, use a configuração PortBindings no grupo HostConfig das opções de criação do contêiner do Docker para mapear a porta exposta no módulo para uma porta no dispositivo host. Por exemplo, se você expôs a porta 8080 dentro do módulo e deseja mapeá-la para a porta 80 do dispositivo host, as opções de criação no arquivo template.json seriam parecidas com o exemplo a seguir:
"createOptions": {
"HostConfig": {
"PortBindings": {
"8080/tcp": [
{
"HostPort": "80"
}
]
}
}
}
Quando convertido em cadeia de caracteres para o manifesto de implantação, a configuração fica assim:
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"80\"}]}}}"
Restringir o uso da memória do módulo e da CPU
Declare quanto dos recursos de host um módulo pode usar. Esse controle garante que um módulo não consuma muita memória ou CPU, impedindo que outros processos sejam executados no dispositivo. Você pode gerenciar essas configurações com opções de criação de contêiner do Docker no grupo HostConfig, incluindo:
- Memória: Limite de memória em bytes. Por exemplo, 268435456 bytes = 256 MB.
- MemorySwap: Limite total de memória (memória + swap). Por exemplo, 536870912 bytes = 512 MB.
- NanoCPUs: cota de CPU em unidades de 10-9 (um bilionésimo) CPUs. Por exemplo, 250000000 nanocpus = 0,25 CPU.
No formato template.json, esses valores seriam semelhantes ao seguinte exemplo:
"createOptions": {
"HostConfig": {
"Memory": 268435456,
"MemorySwap": 536870912,
"NanoCpus": 250000000
}
}
Depois de sequenciados para o manifesto de implantação final, esses valores se parecerão com o exemplo a seguir:
"createOptions":"{\"HostConfig\":{\"Memory\":268435456,\"MemorySwap\":536870912,\"CpuPeriod\":25000}}"
Otimizar GPU de um módulo do IoT Edge
Se você estiver executando seu módulo do IoT Edge em uma máquina virtual com otimização de GPU, também poderá habilitar um módulo do IoT Edge para se conectar à sua GPU. Para fazer isso com um módulo existente, adicione algumas especificações ao seu createOptions:
{"HostConfig": {"DeviceRequests": [{"Count": -1,"Capabilities": [["gpu"]]}]}}
Confirme essas configurações usando o comando inspecionar do Docker para exibir a nova configuração em uma impressão JSON.
sudo docker inspect <YOUR-MODULE-NAME>
Para saber mais sobre como seu dispositivo e máquina virtual se conectam a uma GPU, consulte Configurar, conectar e verificar um módulo do IoT Edge para uma GPU.
Próximas etapas
Para obter mais exemplos de opções de criação em ação, consulte estes exemplos do IoT Edge: