산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

Node-RED 및 Docker 시작하기

Docker 컨테이너를 사용하여 PLCnext 장치에서 node-RED 서버를 실행할 수 있습니다. 여기에 설명된 다른 방법이 조금 더 빠릅니다. OCI 컨테이너를 사용하면 몇 가지 장점이 있습니다. 예를 들어 애플리케이션에 대해 동일한 패키지를 반복적으로 사용하는 경우 표준 이미지를 빌드하고 Docker 허브에서 다운로드하는 것이 유용할 수 있습니다. Docker는 또한 우리가 원할 때 node-red 서버를 시작 및 중지하는 데 사용할 수 있습니다.

이 블로그는 그것에 대해 설명합니다. 먼저 Docker 설치 과정을 안내하고 설치를 확인하겠습니다. Dockerfile이 미리 설치된 패키지로 사용자 지정 이미지를 만들고 새로 만든 이미지에서 컨테이너를 만듭니다. 마지막으로 컨테이너가 컨트롤러 부팅 시 시작되고 이미지를 Dockerhub에 푸시하는지 확인합니다.

Balena – 엔진 설치

Docker 컨테이너를 사용하여 PLCnext 장치에서 node-RED 런타임을 실행할 수 있다고 말했을 때 저는 약간 거짓말을 했습니다. 보시다시피 Balena 엔진을 컨테이너를 실행하는 엔진으로 사용하며 보다 구체적으로 OCI(Open Container Initiative) 컨테이너를 사용합니다. Wrestling trough trough the nomenclature는 Makersblog에 대한 우리의 길을 우리에게 가져다 줄 것이지만, 이 블로그 끝에 있는 추가 읽기 섹션에서 관심 있는 사람들을 위해 몇 가지 링크를 추가했습니다.

설치 절차는 다소 쉽고 전체 참조를 위해 여기에서 찾을 수 있지만 실용적인 이유로 명령은 다음 섹션에서도 제공됩니다.
루트 사용자로 로그인했는지 확인하고 새 루트 암호를 생성하려면 셸에 다음 명령을 입력하고 관리자 암호를 입력한 다음 새 루트 패스를 두 번 입력합니다.

sudo passwd root

su 다음에 새로 생성한 비밀번호를 입력하여 루트 사용자로 로그인하십시오.

git 저장소를 복제하고 새 폴더로 이동

git clone https://github.com/PLCnext/Docker_GettingStarted.git
cd Docker_GettingStarted

설정 스크립트를 실행 가능하게 만들고 해당 스크립트를 실행합니다.

chmod +x setup.sh
./setup.sh

컨테이너에서 인터넷 액세스 가져오기

때때로 설치 중에 nft 테이블이 잘못 설정됩니다. 다행히 이것은 쉬운 수정입니다.
전체 참조 가이드는 여기에서 찾을 수 있지만 진행 상황에 대한 간략한 설명은 아래에 나와 있습니다.

쉘 유형에서

ifconfig

네트워크 인터페이스의 구성이 나타납니다. Balena라는 이름 중 하나는 이 인터페이스의 Inet 주소를 기록해 둡니다.
다음과 같아야 합니다.172.17.0.1 

셸에 다음 명령을 입력하고 이전 단계에서 받은 Inet 주소를 스크립트의 두 번째 줄과 비교합니다.
두 주소가 같아야 하며 그렇다면 다음 섹션으로 넘어갈 수 있습니다.
그렇지 않은 경우 셸에서 다음 명령을 실행하고 두 번째 줄의 주소를 ifconfig에서 받은 주소와 일치하도록 변경합니다.

nano /etc/nftables/balena.nft

balena-engine-daemon을 중지했다가 시작하여 nft 테이블을 다시 로드합니다.

/etc/init.d/balena stop
/etc/init.d/balena start

나의 첫 번째 컨테이너

다음 명령을 사용하여 첫 번째 컨테이너를 다운로드하려면 플래그에 대해 나중에 설명하겠습니다. 이제 플래그에 대해 걱정하지 마세요. 이제 costum 패키지가 없는 node-red 컨테이너를 다운로드합니다. 의상 패키지가 필요하지 않은 경우 여기에서 중지하고 컨트롤러의 포트 1880으로 이동할 수 있습니다.

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

도커 허브

이전 섹션에서 사용한 arm32v7/debian 이미지는 Docker Hub에서 다운로드했습니다.
Docker Hub는 본질적으로 컨테이너 이미지를 수집하고 쉽게 다운로드할 수 있는 장소입니다.
나는 arm32v7 조직을 추천할 수 있습니다. 이 조직은 AXC F 2152의 아키텍처와 호환되는 이미지를 생성합니다.

node-red 조직은 AXC F 2152와 호환되는 이미지를 만들었습니다. 다음 섹션에서 이 이미지를 사용할 것이지만 먼저 컨테이너를 많이 사용하는 경우 Docker Hub에 계정을 만들고 저장소를 사용합니다. 무료 계정을 만들면 거의 무제한의 공개 저장소와 하나의 개인 저장소를 얻게 됩니다. 한동안 Docker Hub를 사용하기를 거부했지만 시간이 많이 소요되었습니다.
이 블로그의 마지막 섹션에서는 로그인하여 이미지에 태그를 다시 지정하고 이미지를 Docker Hub에 푸시하는 방법을 보여줌으로써 Docker Hub 사용에 대한 학습 곡선을 약간 평평하게 만들 것입니다.

도커 파일

도커 파일은 어떤 의미에서는 도커 이미지의 레시피입니다. 이 블로그에서는 Dockerfile을 사용하여 설치해야 하는 패키지와 함께 자체 노드 빨간색 이미지를 만듭니다.
Dockerfile의 첫 번째 줄은 거의 항상 FROM 명령입니다. 이 명령을 사용하여 자체 이미지를 구축할 기본 이미지를 정의합니다.
FROM 문 이후에 이미지 구축을 시작합니다. Dockerfile에서 사용할 수 있는 많은 명령이 있지만 여기서는 RUN만 사용합니다.
Dockerfile 참조 링크는 추가 읽기 섹션에서 제공됩니다.

RUN 문은 우리가 만들고 있는 컨테이너 내부에서 뒤따르는 명령을 실행할 것입니다.
따라서 새 패키지(예:SNMP 패키지)를 설치하려면 RUN npm install node-red-node-snmp

이론이 끝나면 Dockerfile을 빌드해 보겠습니다. 바라건대, 당신은 여전히 ​​SSH 세션에 있습니다(두 섹션 이전의 데비안 포함이 아니라 AXC F 2152로 돌아갔는지 확인하십시오!).
nano로 Dockerfile을 만들고 내용을 복사하여 새 파일에 붙여넣을 수 있습니다. 저장(ctrl + s) 및 종료(ctrl + x).nano Dockerfile

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

이제 새로운 이미지를 구축할 시간입니다!

balena-engine build . --tag myimage

이미지에 성공적으로 태그가 지정되었다는 메시지를 받으면 첫 번째 이미지를 만든 것입니다!
방금 빌드한 이미지를 보려면 다음 명령을 사용하십시오. balena-engine images

새 이미지 실행

마지막으로 이미지를 실행하고 이미지에서 컨테이너를 만들 준비가 되었습니다!
셸에서 다음 명령을 캐스팅하여 컨테이너를 대화형으로 실행합니다.
Interactively는 터미널에서 컨테이너 내부에서 무슨 일이 일어나는지 볼 수 있다는 것을 의미합니다.
반대는 분리되고 플래그 -d

로 표시됩니다.
balena-engine run -it -p 1880:1880 --name nodered myimage

컨테이너를 종료하고 계속 실행하려면 ctrl + p ctrl +q를 사용하십시오.
컨트롤러의 IP 주소와 포트 1880을 차례로 탐색하면 노드 빨간색 환경이 표시되고 snmp 패키지가 설치된 것을 볼 수 있습니다!

부팅 시 이미지 시작 및 도커 실행 플래그에 대한 입문서

AXC F 2152가 다시 시작될 때마다 컨테이너를 수동으로 부팅하는 것은 비현실적입니다. 운 좋게도 우리는 Docker에게 우리를 위해 그것을 시작하라고 말할 수 있고 그것은 쉽습니다!
아래 나열된 명령을 사용하십시오. 사용된 도커 플래그를 더 잘 이해할 수 있는 시간이기도 합니다. 우선 플래그는 명령 뒤에 지정하고 – 또는 –로 시작하는 것입니다.
지금까지 우리는 컨테이너를 대화식으로 실행하는 -it과 분리된 컨테이너를 실행하는 -d(백그라운드에서)만 보았습니다.

-p 플래그는 컨테이너의 포트를 호스트의 포트에 매핑합니다. 먼저 호스트의 포트 번호를 지정한 다음 컨테이너의 포트 번호를 지정합니다.
–name 플래그를 사용하여 컨테이너에 이름을 지정할 수 있습니다. 이 이름은 balena-engine ps를 사용하여 모든 활성 컨테이너를 나열하거나 balena-engine ps -a를 사용하여 모든 컨테이너를 나열할 때 표시됩니다.
–name 플래그가 사용되지 않으면 balena-daemon은 컨테이너에 임의의 이름을 할당합니다.

마지막으로 –restart 플래그를 사용하여 컨테이너에 다시 시작 정책을 할당할 수 있습니다.
가능한 설정은 추가 판독값에 나열된 참조 링크에서 찾을 수 있습니다.
지금은 –restart가 항상 트릭을 수행합니다! 우리의 명령은 다음과 같습니다:

balena-engine run -it -p 1880:1880 --name nodered --restart always myimage

도커 허브로 푸시

다른 컨트롤러에서 이미지를 사용하지 않으려는 경우. Docker Hub에 이미지를 업로드하는 것이 좋습니다.
이미 계정이 있고 도커 저장소를 만들었다는 전제 하에 계속하겠습니다. 먼저 계정에 로그인해야 합니다. balena-engine 로그인 다음에 사용자 이름과 비밀번호를 입력하면 됩니다. 이제 개인 저장소에서 이미지를 다운로드하고 Docker 허브로 이미지를 푸시할 수 있습니다.

이미지를 Docker 허브에 푸시하려면 이름을 올바르게 지정하는 것이 중요합니다. 저장소를 myrep로 만들고 사용자 계정이 myaccount인 경우 이미지 이름은 myaccount/myrep여야 합니다.
이미지를 빌드할 때 그렇게 이름을 지정하지 않은 경우 balena-engine tag oldimagetag newimagetag를 사용하여 이미지에 다시 태그를 지정해야 합니다. 우리의 경우 다음과 같습니다.

balena-engine tag myimage myaccount/myrep  

더 이상 정의된 것이 없으면 최신 레이블을 가져옵니다. 레이블에 :및 레이블 이름을 추가하는 것이 가능합니다. 예:

balena-engine tag myimage myaccount/myrep:alabel 

남은 것은 다음 명령을 사용하여 이미지를 Docker 허브로 푸시하는 것뿐입니다.

balena-engine push myaccount/myrep

추가 자료 및 참고 자료


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


산업기술

  1. 세라믹 3D 프린팅 시작하기
  2. 기본 염료에 대해 알아보기!
  3. 산업용 염료 및 안료에 익숙해지기!
  4. TJBot 시작하기
  5. RAK 831 Lora Gateway 및 RPi3 시작하기
  6. RAK831 LoRa 게이트웨이 및 RPi3 시작하기
  7. 인내와 끈기로 이끌다
  8. AI 보험 시작하기:입문 가이드
  9. Arduino 튜토리얼 01:시작하기
  10. My.Cat.com 시작하기