Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Node-RED и начало работы с Docker

Контейнер Docker можно использовать для запуска сервера node-RED на устройстве PLCnext. Хотя другой метод, описанный здесь, немного быстрее. Использование контейнеров OCI дает некоторые преимущества. Например, при многократном использовании одних и тех же пакетов для приложения может быть полезно создать стандартный образ и просто загрузить его из Docker Hub. Docker также можно использовать для запуска и остановки сервера node-red, когда мы этого хотим.

Этот блог объяснит именно это. Сначала я проведу вас через процесс установки Docker, и мы проверим установку. Мы создадим собственный образ с пакетами по нашему вкусу, предварительно установленными с Dockerfile, и создадим контейнер из нашего только что созданного образа. Наконец, мы убедимся, что наш контейнер запустится при загрузке контроллера и отправит наш образ в Dockerhub.

Установка двигателя Balena

Я немного солгал, когда сказал, что контейнеры Docker можно использовать для запуска среды выполнения node-RED на устройстве PLCnext. Как вы увидите, мы используем движок Balena в качестве движка для запуска контейнеров, точнее, мы будем использовать контейнеры OCI (Open Container Initiative). Борьба с номенклатурой завела бы нас слишком далеко для блога Makers, но в разделе «Дополнительная литература» в конце этого блога я добавил несколько ссылок для тех, кто заинтересован.

Процедура установки довольно проста, и ее можно найти здесь для полного ознакомления, но из соображений практичности команды также приведены в следующем разделе.
Убедитесь, что вы вошли в систему как пользователь root, чтобы создать новый пароль root, введите следующую команду в оболочке и введите пароль администратора, а затем два раза новый пароль root.

sudo passwd root

Войдите в систему как пользователь root, введя su, а затем ваш только что созданный пароль.

Клонируйте репозиторий git и перейдите в новую папку

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

Сделайте сценарий установки исполняемым и запустите указанный сценарий.

chmod +x setup.sh
./setup.sh

Получение доступа в Интернет из ваших контейнеров

Иногда во время установки таблицы nft настраиваются неправильно. К счастью, это легко исправить.
Полное справочное руководство можно найти здесь, а краткое описание прогресса приводится ниже.

В типе вашей оболочки

ifconfig

Появится конфигурация ваших сетевых интерфейсов. Одного из них зовут Balena, обратите внимание на инет-адрес этого интерфейса.
Должно быть что-то вроде этого: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

Мой первый контейнер

Чтобы загрузить свой первый контейнер, используйте следующую команду, флаги будут объяснены позже, не беспокойтесь о них сейчас. Теперь мы загрузим контейнер с красным узлом без пакетов костюмов. Если вам не нужны пакеты костюмов, вы можете остановиться здесь и перейти к порту 1880 контроллера.

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

Центр Docker

Образ arm32v7/debian, использованный в предыдущем разделе, был загружен с Docker Hub.
Docker Hub — это, по сути, место, где собираются образы контейнеров, откуда их можно легко загрузить.
Могу порекомендовать организацию arm32v7, эта организация создает образы совместимые с архитектурой AXC F 2152.

Организация node-red создала образы, совместимые с AXC F 2152, мы будем использовать этот образ в следующем разделе, но сначала я хотел бы упомянуть, что если вы будете часто использовать контейнеры, вам следует создать учетную запись на Docker Hub и использовать его репозитории. Вы получите почти неограниченное количество общедоступных репозиториев и один частный репозиторий при создании бесплатной учетной записи. Какое-то время я сопротивлялся использованию Docker Hub, но это стоило мне много времени.
В последнем разделе этого блога я немного сгладлю кривую обучения использованию Docker Hub, показав, как войти в систему, повторно пометить изображение и отправить изображение в Docker Hub.

Докерфайл

Файл докера — это в некотором смысле рецепт для образа докера. В этом блоге мы будем использовать Dockerfile для создания собственного образа node-red с установленными пакетами.
Первая строка Dockerfile почти всегда является командой FROM. С помощью этой команды мы определяем базовый образ, из которого мы создадим собственный образ.
После оператора FROM мы начинаем создавать наш образ. Есть много возможных команд, которые можно использовать в Dockerfile, но здесь мы будем использовать только RUN.
Справочная ссылка на Dockerfile приведена в разделе «Дополнительные материалы».

Оператор RUN выполнит следующую команду внутри контейнера, который мы создаем.
Итак, чтобы установить новый пакет, например пакет SNMP, мы указываем:RUN npm install node-red-node-snmp

После теории давайте создадим Dockerfile. Надеюсь, вы все еще находитесь в сеансе SSH (убедитесь, что вы вернулись к AXC F 2152, а не к debian, который был два раздела назад!).
Вы можете создать Dockerfile с помощью nano и скопировать содержимое в новый файл. сохранить (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

Запуск нашего нового изображения

Наконец, мы готовы запустить наш образ и создать из него контейнер!
Введите следующую команду в оболочке, чтобы запустить контейнер в интерактивном режиме.
Интерактивно означает, что мы можем видеть в терминале, что происходит внутри контейнера.
Обратное отсоединяется, помечается флагом -d

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

Чтобы выйти из контейнера и продолжить его работу, используйте ctrl + p ctrl + q
Когда вы переходите к IP-адресу контроллера, за которым следует порт 1880, отображается красная среда узла, и мы видим установленный пакет snmp!

Запуск образа при загрузке и пример флагов запуска Docker

Нецелесообразно загружать контейнер вручную каждый раз при перезапуске AXC F 2152. К счастью, мы можем сказать Docker, чтобы он запустил его для нас, и это легко!
Просто используйте команду, указанную ниже. Это также время, чтобы лучше понять используемые флаги Docker. Во-первых, флаг — это то, что мы даем после команды и начинается с — или —.
До сих пор мы видели только -it для интерактивного запуска контейнера и -d для запуска контейнера отдельно (в фоновом режиме).

Флаг -p сопоставляет порт контейнера с портом хоста. Сначала указывается номер порта хоста, затем номер порта контейнера.
Мы можем дать контейнеру имя с флагом –name. Это имя будет отображаться, когда вы используете balena-engine ps для вывода списка всех активных контейнеров или balena-engine ps -a для вывода списка всех контейнеров.
Когда флаг –name не используется, balena-daemon присваивает контейнеру случайное имя.

И последнее, но не менее важное:политика перезапуска может быть назначена контейнеру с флагом –restart.
Возможные настройки можно найти в справочной ссылке, указанной в дальнейших чтениях.
На данный момент — перезагрузка всегда поможет! Наша команда будет:

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

Отправка в центр Docker

Когда вы не хотите использовать свое изображение на разных контроллерах. Рекомендуется загрузить образ в Docker Hub.
Исходя из того, что у вас уже есть учетная запись и вы создали репозиторий докеров, мы продолжим. Сначала нам нужно войти в свою учетную запись. Это можно сделать, введя логин balena-engine, а затем имя пользователя и пароль. Теперь можно загружать образы из частных репозиториев и отправлять образы в Docker Hub.

Чтобы отправить образ в Docker Hub, важно правильно подобрать имя. Когда я создал репозиторий myrep и моя учетная запись пользователя — myaccount, имя изображения должно быть myaccount/myrep.
Если вы не назвали его таким образом при создании изображения, вам необходимо повторно пометить изображение, используя тег balena-engine oldimagetag newimagetag. В нашем случае это будет:

balena-engine tag myimage myaccount/myrep  

Когда больше ничего не определено, он получает последнюю метку. В метке можно добавить :и имя метки. Например:

balena-engine tag myimage myaccount/myrep:alabel 

Осталось только отправить наш образ в Docker hub с помощью команды:

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. Начало работы с ИИ в страховании:вводное руководство
  9. Учебник по Arduino 01:Начало работы
  10. Начало работы с My.Cat.com