Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Tecnologia industrial

Node-RED e introdução ao Docker


Um contêiner Docker pode ser usado para executar um servidor node-RED em um dispositivo PLCnext. Embora o outro método descrito aqui seja um pouco mais rápido. O uso de contêineres OCI traz algumas vantagens. Por exemplo, ao usar repetidamente os mesmos pacotes para um aplicativo, pode ser útil criar uma imagem padrão e apenas baixá-la do hub do Docker. O Docker também pode ser usado para iniciar e parar o servidor node-red quando quisermos.

Este blog vai explicar exatamente isso. Primeiro, vou guiá-lo pelo processo de instalação do Docker e verificaremos a instalação. Construiremos uma imagem personalizada com pacotes do nosso gosto pré-instalados com um Dockerfile e criaremos um contêiner a partir de nossa imagem recém-criada. Por fim, garantiremos que nosso contêiner seja iniciado na inicialização do controlador e envie nossa imagem para o Dockerhub.

Instalação do Balena – motor


Menti um pouco quando disse que os containers Docker podem ser usados ​​para executar um runtime node-RED em um dispositivo PLCnext. Como você verá, usamos o mecanismo Balena como um mecanismo para executar contêineres, mais especificamente, usaremos contêineres OCI (Open Container Initiative). Lutar pela nomenclatura nos levaria muito longe para um Makersblog, mas na seção de leitura adicional no final deste blog adicionei alguns links para quem estiver interessado.

O procedimento de instalação é bastante fácil e pode ser encontrado aqui para referência completa, mas por razões de praticidade os comandos também são fornecidos na próxima seção.
Certifique-se de estar logado como usuário root, para criar uma nova senha root digite o seguinte comando no shell e digite sua senha de administrador seguida por duas vezes a nova senha root.
sudo passwd root

Faça login como usuário root digitando su seguido de sua senha recém-criada.

Clone o repositório git e vá para a nova pasta
git clone https://github.com/PLCnext/Docker_GettingStarted.git
cd Docker_GettingStarted

Torne o script de configuração executável e execute o referido script.
chmod +x setup.sh
./setup.sh

Obtendo acesso à Internet de seus contêineres


Às vezes, durante a instalação, as tabelas nft são configuradas incorretamente. Felizmente, esta é uma solução fácil.
O guia de referência completo pode ser encontrado aqui, mas uma breve descrição do progresso é fornecida abaixo.

No seu tipo de shell
ifconfig

A configuração de suas interfaces de rede aparece. Um deles chamado Balena, tome nota do endereço Inet desta interface.
Deve ser algo assim:172.17.0.1 

Digite o seguinte comando em seu shell e compare o endereço Inet recebido na etapa anterior com a segunda linha do script.
Os dois endereços devem ser os mesmos, se assim for, você pode ir para a próxima seção.
Caso contrário, converta o próximo comando em seu shell e altere o endereço na segunda linha para corresponder ao recebido pelo ifconfig.

nano /etc/nftables/balena.nft

Pare e inicie o balena-engine-daemon para recarregar as tabelas nft.
/etc/init.d/balena stop
/etc/init.d/balena start

Meu primeiro contêiner


Para baixar seu primeiro container use o próximo comando, as flags serão explicadas mais adiante, não se preocupe com elas agora. Agora vamos baixar um container node-red sem pacotes costum. Se você não precisa de pacotes personalizados, pode parar aqui e navegar até a porta 1880 do controlador.

balena-engine run -d -p 1880:1880 --name nodered --restart always nodered/node-red

Docker Hub


A imagem arm32v7/debian usada na seção anterior foi baixada do Docker Hub.
O Docker Hub é essencialmente um local onde as imagens de contêiner são reunidas e podem ser facilmente baixadas.
Posso recomendar a organização arm32v7, esta organização cria imagens compatíveis com a arquitetura do AXC F 2152.

A organização node-red criou uma imagem compatível com o AXC F 2152, usaremos essa imagem na próxima seção, mas antes gostaria de mencionar que se você for usar muito containers, deve criar uma conta no Docker Hub e usar seus repositórios. Você terá repositórios públicos quase ilimitados e um repositório privado ao criar uma conta gratuita. Eu resisti a usar o Docker Hub por um tempo, mas isso me custou muito tempo.
Na última seção deste blog, vou achatar um pouco a curva de aprendizado do uso do Docker Hub, mostrando como fazer login novamente e marcar uma imagem e enviar uma imagem para o Docker Hub.

Dockerfile


Um arquivo docker é, de certa forma, a receita para uma imagem docker. Neste blog, usaremos um Dockerfile para criar nossa própria imagem node-red, com os pacotes que precisamos instalados.
A primeira linha de um Dockerfile é quase sempre o comando FROM. Com este comando definimos uma imagem base de onde construiremos nossa própria imagem.
Após a instrução FROM, começamos a construir nossa imagem. Existem muitos comandos possíveis que podem ser usados ​​em um Dockerfile, mas aqui usaremos apenas RUN.
Um link de referência do Dockerfile é fornecido na seção de leituras adicionais.

A instrução RUN executará o comando que segue dentro do container que estamos construindo.
Então, para instalar um novo pacote, por exemplo, o pacote SNMP, declaramos:RUN npm install node-red-node-snmp

Após a teoria, vamos construir um Dockerfile. Felizmente, você ainda está em uma sessão SSH (certifique-se de estar de volta no AXC F 2152 e não no conteúdo debian de duas seções atrás!).
Você pode criar o Dockerfile com nano e copiar colando o conteúdo no novo arquivo. salve (ctrl + s) e saia (ctrl + x).nano Dockerfile

FROM nodered/node-red:latest-minimal
RUN npm install node-red-node-snmp

Agora é hora de construir nossa nova imagem!
balena-engine build . --tag myimage

Quando você recebeu a mensagem de que as imagens foram marcadas com sucesso, você construiu sua primeira imagem!
Para ver a imagem que você acabou de construir use o comando:imagens do motor balena

Executando nossa nova imagem


Finalmente, estamos prontos para executar nossa imagem e criar um container a partir dela!
Transmita o comando a seguir no shell para executar o contêiner interativamente.
Interativamente significa que podemos ver no terminal o que está acontecendo dentro do contêiner.
O oposto é destacado, marcado com o sinalizador -d
balena-engine run -it -p 1880:1880 --name nodered myimage

Para sair do container e mantê-lo rodando use ctrl + p ctrl +q
Quando você navega para o endereço IP do controlador seguido pela porta 1880, o ambiente do nó vermelho é exibido e vemos o pacote snmp instalado!

Iniciando a imagem na inicialização e uma cartilha nos sinalizadores de execução do docker


Não é prático inicializar o contêiner manualmente toda vez que o AXC F 2152 é reiniciado. Felizmente, podemos dizer ao Docker para iniciá-lo para nós, e é fácil!
Basta usar o comando listado abaixo. Este também é o momento de entender melhor os sinalizadores do docker usados. Para começar, um sinalizador é algo que damos após o comando e começa com – ou –.
Até agora vimos apenas -it, para rodar um container interativamente e -d para rodar um container desanexado (em segundo plano).

O sinalizador -p mapeia a porta do contêiner para a porta do host. Primeiro, o portnumber do host é declarado e, em seguida, o portnumber do contêiner.
Podemos dar um nome ao contêiner com o sinalizador –name. Este nome será mostrado quando você usar o balena-engine ps, para listar todos os contêineres ativos ou o balena-engine ps -a para listar todos os contêineres.
Quando nenhum sinalizador –name é usado, o balena-daemon atribuirá um nome aleatório ao contêiner.

E por último, mas não menos importante, uma política de reinicialização pode ser atribuída a um contêiner com o sinalizador –restart.
As configurações possíveis podem ser encontradas no link de referência listado nas leituras adicionais.
Por enquanto -reiniciar sempre fará o truque! Nosso comando será:
balena-engine run -it -p 1880:1880 --name nodered --restart always myimage

Enviando para o hub do Docker


Quando você não quer usar sua imagem em controladores diferentes. É uma boa ideia fazer upload de sua imagem para o Docker Hub.
Partindo da premissa de que você já possui uma conta e criou um repositório docker, continuaremos. Primeiro, precisamos fazer login em nossa conta. Isso pode ser feito digitando balena-engine login seguido de seu nome de usuário e senha. Agora é possível baixar imagens de repositórios privados e enviar sua imagem para o hub do Docker.

Para enviar sua imagem para o hub do Docker, é importante obter o nome correto. Quando eu fiz um repositório myrep e minha conta de usuário é myaccount o nome da imagem deve ser myaccount/myrep.
Quando você não a nomeou assim ao construir a imagem, você deve remarcar a imagem usando a tag balena-engine oldimagetag newimagetag. No nosso caso seria:
balena-engine tag myimage myaccount/myrep  

Quando nada mais estiver definido, é bom obter o rótulo mais recente. É possível adicionar em um rótulo um :e um nome de rótulo. Por exemplo:
balena-engine tag myimage myaccount/myrep:alabel 

A única coisa que resta é enviar nossa imagem para o hub do Docker com o comando:
balena-engine push myaccount/myrep

Mais leituras e referências



https://github.com/PLCnext/Docker_GettingStarted/blob/master/getting-started/Part-01/README.md

https://www.docker.com/resources/what-container

https://docs.docker.com/engine/reference/builder/

https://hub.docker.com/

https://hub.docker.com/r/nodered/node-red

Tecnologia industrial

  1. Introdução à impressão 3D em cerâmica
  2. Familiarizando-se com os corantes básicos!
  3. Familiarizando-se com corantes e pigmentos industriais!
  4. Introdução ao TJBot
  5. Introdução ao RAK 831 Lora Gateway e RPi3
  6. Primeiros passos com o RAK831 LoRa Gateway e RPi3
  7. Liderando com Persistência e Perseverança
  8. Introdução à IA em seguros:um guia introdutório
  9. Arduino Tutorial 01:Começando
  10. Introdução ao My.Cat.com