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

Docker로 PLCnext에 Node-RED 배포하기: 단계별 가이드

Docker 컨테이너로 PLCnext 장치에서 Node-RED 서버를 실행할 수 있습니다. 여기에 설명된 다른 방법이 조금 더 빠르지만, OCI 컨테이너 사용에는 몇 가지 장점이 있습니다. 예를 들어 애플리케이션에 같은 패키지를 반복 사용한다면 표준 이미지를 빌드해 Docker Hub에서 다운로드하는 것이 유용합니다. Docker로 원할 때 Node-RED 서버를 시작하고 중지할 수도 있습니다.

이 블로그에서 그 방법을 설명합니다. 먼저 Docker 설치 과정을 안내하고 설치를 확인합니다. 원하는 패키지가 사전 설치된 커스텀 이미지를 Dockerfile로 빌드하고, 새로 만든 이미지에서 컨테이너를 생성합니다. 마지막으로 컨테이너가 컨트롤러 부팅 시 자동 시작되도록 하고 이미지를 Docker Hub에 푸시합니다.

Balena Engine 설치

Docker 컨테이너로 PLCnext 장치에서 Node-RED 런타임을 실행할 수 있다고 했지만, 사실 Balena Engine을 컨테이너 실행 엔진으로 사용합니다. 더 정확히 말하면 OCI(Open Container Initiative) 컨테이너를 사용합니다. 명칭 씨름은 메이커스 블로그 범위를 벗어나니, 관심이 있다면 블로그 끝의 추가 자료 링크를 참조하세요.

설치 절차는 꽤 간단하며 여기에서 전체 참조 가능하지만, 실용성을 위해 다음 섹션에도 명령을 포함했습니다.

루트 사용자로 로그인했는지 확인하세요. 새 루트 비밀번호 생성:

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 데몬을 중지하고 시작해 nft 테이블을 다시 로드합니다.

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

첫 컨테이너 실행

첫 컨테이너 다운로드(플래그 설명은 나중에). 커스텀 패키지 없는 Node-RED 컨테이너 다운로드. 커스텀 패키지가 필요 없으면 여기까지 하고 컨트롤러 포트 1880으로 접속하세요.

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

Docker Hub

앞서 사용한 arm32v7/debian 이미지는 Docker Hub에서 다운로드했습니다. Docker Hub는 컨테이너 이미지가 모여 있어 쉽게 다운로드할 수 있는 곳입니다. arm32v7 조직을 추천합니다. AXC F 2152 아키텍처와 호환되는 이미지를 만듭니다. nodered 조직도 AXC F 2152 호환 이미지를 만들었으며 다음 섹션에서 사용합니다. 컨테이너를 많이 사용한다면 Docker Hub 계정 생성과 리포지토리 사용을 권장합니다. 무료 계정으로 거의 무제한 공개 리포지토리와 비공개 리포지토리 1개를 얻습니다. 저는 한동안 Docker Hub 사용을 미뤘는데, 많은 시간을 낭비했습니다. 이 블로그 마지막 섹션에서 Docker Hub 사용 학습 곡선을 완만하게 해보겠습니다.

Dockerfile

Dockerfile은 Docker 이미지의 레시피 같은 것입니다. 이 블로그에서 Dockerfile로 필요한 패키지가 설치된 자체 Node-RED 이미지를 만듭니다. Dockerfile 첫 줄은 거의 항상 FROM 명령입니다. 기본 이미지를 정의해 거기서 우리 이미지를 빌드합니다. FROM 문 이후 이미지 빌드 시작. Dockerfile에서 사용 가능한 명령이 많지만 여기서는 RUN만 사용합니다. Dockerfile 참조 링크는 추가 자료 섹션에 있습니다.

RUN 문은 빌드 중인 컨테이너 내부에서 뒤따르는 명령을 실행합니다. 예를 들어 SNMP 패키지 설치:

RUN npm install node-red-node-snmp

이론은 여기까지, Dockerfile을 빌드해 봅시다. 여전히 SSH 세션 중이길 바랍니다(AXC F 2152로 돌아왔는지, 두 섹션 전의 debian 컨테이너 안에 있지 않은지 확인!). nano Dockerfile로 Dockerfile 생성 후 내용 복사 붙여넣기. 저장(ctrl+s) 후 종료(ctrl+x).

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

이제 새 이미지 빌드!

balena-engine build . --tag myimage

"이미지가 성공적으로 태그됨" 메시지를 받으면 첫 이미지 빌드 완료! balena-engine images 명령으로 방금 빌드한 이미지 확인.

새 이미지 실행

드디어 이미지 실행해 컨테이너 생성 준비 완료! 쉘에 다음 명령으로 컨테이너를 대화형으로 실행. 대화형은 컨테이너 내부 상황을 터미널에서 볼 수 있다는 의미. 반대는 detached, -d 플래그.

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

컨테이너를 빠져나오면서 계속 실행하려면 ctrl+p ctrl+q. 컨트롤러 IP 주소에 포트 1880으로 접속하면 Node-RED 환경이 보이고 SNMP 패키지 설치된 것을 확인할 수 있습니다!

부팅 시 이미지 자동 시작 및 docker run 플래그 입문

AXC F 2152 재시작할 때마다 컨테이너를 수동으로 부팅하는 건 비현실적입니다. 다행히 Docker에 자동 시작을 맡길 수 있고, 쉽습니다! 아래 명령 사용. 이때 docker 플래그를 더 잘 이해해 봅시다. 플래그는 명령 뒤에 오며 - 또는 --로 시작합니다. 지금까지 -it(대화형 실행), -d(백그라운드 실행)만 봤습니다.

우리의 명령:

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

Docker Hub에 푸시

다른 컨트롤러에서도 이미지를 사용하고 싶다면 Docker Hub에 업로드하는 게 좋습니다. 이미 계정이 있고 Docker 리포지토리를 만들었다고 가정하고 진행. 먼저 계정 로그인: balena-engine login 후 사용자명과 비밀번호 입력. 이제 비공개 리포지토리에서 이미지 다운로드 가능하고 내 이미지를 Docker Hub에 푸시 가능.

Docker Hub에 이미지 푸시하려면 이름이 중요합니다. myrep 리포지토리를 만들었고 내 계정이 myaccount라면 이미지 이름은 myaccount/myrep이어야 합니다. 이미지 빌드 시 이렇게 명명하지 않았다면 balena-engine tag oldimagetag newimagetag로 재태깅. 우리 경우:

balena-engine tag myimage myaccount/myrep

아무것도 정의하지 않으면 latest 태그가 붙습니다. :와 태그 이름으로 레이블 추가 가능. 예:

balena-engine tag myimage myaccount/myrep:alabel

남은 건 이미지를 Docker Hub에 푸시하는 명령:

balena-engine push myaccount/myrep

추가 자료 및 참고 문헌

산업기술

  1. 세라믹 3D 프린팅 실용 가이드: 기술, 소재, 설계 팁
  2. 염기성 염료의 이해: 용도, 안전성 및 산업 응용
  3. 산업용 염료·안료 종합 가이드: 응용 분야와 유형
  4. TJBot 시작하기: 나만의 AI 로봇 제작, 설정, 음성 제어
  5. 라즈베리 파이 3에 RAK 831 LoRa 게이트웨이 배포 단계별 가이드
  6. 라즈베리 파이 3에 RAK831 모듈로 LoRa 게이트웨이 구축하기 - 단계별 가이드
  7. 끈기의 교훈: 에이브러햄 링컨과 유지보수 리더십의 지속적 성공
  8. 보험업계 AI: 실전 구현을 위한 실용적 스타터 가이드
  9. 아두이노 입문 튜토리얼 01: 첫 프로젝트 시작하기
  10. Cat® 기계 최적화: My.Cat.com 완벽 활용 가이드