• docker部署多个node-red操作过程



    1
    回到目录

    一、docker安装教程

    docker在线使用安装教程
    linux系统离线安装docker(分步法&一键法)

    回到目录

    二、docker安装node-red

    一、node-red官网https://nodered.org/
    二、node-red官网上Docker安装node-red的教程https://nodered.org/docs/getting-started/docker

    2.1 在线安装node-red镜像

    2.1.1 拉取镜像

    1. 查看可用的redis版本,执行命令:docker search node-red
      1
    2. 拉取node-red镜像:从Docker Hub上获取node-red官方镜像,执行命令:docker pull <镜像名称>:<版本号>
    # 示例
    docker pull nodered/node-red
    
    • 1
    • 2

    1

    1. 查看本地node-red镜像,执行命令: docker images
        执行后,将会列出本机上所有的Docker镜像列表,包括镜像ID、镜像名称、镜像标签、镜像大小等信息。如下图所示:
      1

    从上图可以看出,每个镜像都有一个唯一的ID、一个名称和一些标签(也称为版本)。其中,REPOSITORY字段表示镜像的名称,TAG字段表示镜像的标签,IMAGE ID字段则是该镜像的唯一标识符。

    *查看Docker镜像存储位置:
      在Docker中,每个镜像都是由多个层(Layer)组成的。因此,当用户下载或者构建一个Docker镜像时,实际上是将镜像的所有层下载到本地存储中。而在Linux系统中,Docker镜像实际上是存储在/var/lib/docker目录下的。在终端输入下面命令:sudo ls -l /var/lib/docker/
    1
    执行后,终端将会显示出/var/lib/docker/目录下所有的文件和文件夹列表。其中,/var/lib/docker/image文件夹是Docker储存镜像的主要位置。在/var/lib/docker/image/overlay2/imagedb/content/sha256目录下,存储了所有已下载的Docker镜像(以镜像ID命名),即所有层的存储位置。在每个镜像ID目录下,都有一个名为“real”或者“diff”文件,代表该层的存储位置。
    1
    回到目录

    2.1.2 创建目录并分配权限

    1. 创建目录:mkidr -p /home/node_red/data
    2. 分配权限:chmod 777 -R /home/node_red
      1
      回到目录

    2.2 离线安装node-red镜像

      在实际是应用环境中,服务器可能会处在只能访问内网不能访问外网的环境中,因此不能直接通过访问网站下载镜像。此时,需要手动下载,有两种方式:

    • 方法1:去docker官网下载镜像的安装包’
    • 方法2:从可以访问外网的服务器安装镜像后,将镜像拷贝到本服务器使用 - 建议使用该种方式

    操作步骤如下:

    • 一、在有外网的服务器上操作:
    1. 在有外网环境的服务器安装docker环境后,执行命令拉取镜像:docker pull nodered/node-red
    2. 查看拉取的镜像名称:docker images
      1
    3. 新建文件夹存储镜像:mkdir data
    4. 将镜像保存到磁盘备用,执行命令:docker save -o /data/node-red.tar nodered/node-red
    • 二、在无外网但需要通过docker安装node-red的服务器上操作:
    1. 通过工具将data目录下的node-red.tar镜像文件移动到需要离线安装nodered的服务器对应目录上(目录可自定义,建议在docker安装包下新建目录/data)
      5
    2. 在本服务器加载镜像,执行命令:docker load -i node-red.tar
      6
    3. 查看镜像是否加载成功,执行命令:docker images
      1
      回到目录

    三、 docker操作node-red

    3.1 部署node-red

    部署命令: sudo docker run -u root:node-red -v /home/node_red:/data --privileged=true -p 1881:1880 --name mynodered1 -d nodered/node-red --restart=always

    • -p:端口映射 1881
    • -u:用户 root
    • -v:数据卷挂载 :将/home/node_red软连接到/data
    • -privileged:分配root权限 true
    • /home/node_red:数据存储路径
    • nodered:docker服务包全称
    • –restart=always:设置开机自启动

    通过端口的不同,部署多个node-red:

    • 端口为1882:sudo docker run -u root:node-red -v /home/node_red:/data --privileged=true -p 1882:1880 --name mynodered2 -d nodered/node-red --restart=always
    • 端口为1883:sudo docker run -u root:node-red -v /home/node_red:/data --privileged=true -p 1884:1880 --name mynodered4 -d nodered/node-red --restart=always
      2
    1. 查看容器的运行信息,验证node-red容器是否正常运行:docker ps
      4
    • 查看指定容器状态:docker ps -a | grep node-red5
    • 查看容器运行日志:docker logs --since 30m <容器名>

    此处 --since 30m 为查看此容器30分钟之内的日志情况
    1

    1. 验证服务:在浏览器里打开:http://ip:端口
      6
      回到目录

    3.2 查看\关闭\删除容器

    • 查看所有在运行的容器:docker ps -a
    • 查看指定容器状态:docker ps -a | grep node-red
    • 查看容器运行日志:docker logs --since 30m <容器名>
    • 关闭容器:docker stop <容器名>
    • 删除容器:docker rm <容器名>

    回到目录

    四、Docker删除Redis镜像

    • 查看全部镜像 命令:docker images
    • 删除镜像 命令 :docker rmi <容器 id>

    回到目录

    五、离线安装node-red节点

    以安装node-red-contrib-loop-processing节点为例

    • 一、在已经安装node-red指定节点的服务器操作
    1. 在已经安装node-red指定节点node-red浏览器界面,查看安装节点,复制节点全称
      1
    2. 在服务器搜索,找到节点的安装目录,执行命令:find / -name node-red-contrib-loop-processing
    3. 进入该目录的上级目录,并压缩该文件夹:tar -zcvf node-red-contrib-loop-processing.tar.gz node-red-contrib-loop-processing/
      1
      2
    • 二、在需要离线安装node-red指定节点的服务器操作
    1. 离线节点对node-red的镜像的所有容器都有效时的设置:
      (1)先查看镜像的目录,执行命令:
    # 查看镜像的id
    docker images 
    # 查看Docker 容器和镜像的详细信息 - 指定镜像ID
    docker inspect 988958e4cbe7
    
    • 1
    • 2
    • 3
    • 4

    2
    展示的信息中GraphDriver配置段,主要涉及到 Docker 的存储驱动(storage driver)配置。Docker 使用存储驱动来管理容器和镜像的层以及相关的数据。不同的存储驱动有不同的特性,性能和功能。这个配置段具体是关于 overlay2 存储驱动的。overlay2 是 Docker 默认的存储驱动之一,它是 overlay 驱动的一个改进版本,提供更快的容器启动时间,更好的文件写性能,以及更小的存储使用空间。

    这里有一些字段的解释:

      • LowerDir: 这是底层的目录,包含了所有基础镜像的层。当创建一个新的容器时,这些基础层的文件被联合挂载到 MergedDir。
      • MergedDir: 这是联合挂载的目录,所有基础层的文件都挂载到这里。当容器运行时,这个目录就代表了整个文件系统。
      • UpperDir: 这是上层的目录,包含容器特有的更改。当容器被删除时,这个目录的内容也会被删除。
      • WorkDir: 这是工作目录,用于存放临时文件和缓存。
        1

    根据上图得到,镜像目录在 imagePath/var/lib/docker/overlay2/2555ecfed5866e3c56f856cef939f8db4c7bfbb3b698a573d9dfb5d73a1e44f4/

    展示的信息中Config配置段中的Env: 这是一个环境变量列表。这些环境变量在容器启动时会被设置。这里包括:
    PATH: 定义了可执行文件搜索的路径。

      • NODE_VERSION: Node.js 的版本。
      • YARN_VERSION: Yarn 的版本。
      • NODE_RED_VERSION: Node-RED 的版本。
      • NODE_PATH: Node.js 模块的搜索路径。当Node.js程序尝试导入一个模块时,它首先会查看/usr/src/node-red/node_modules目录,如果找不到,它会继续在/data/node_modules目录中查找。
      • FLOWS: Node-RED 的流配置文件路径。
        2

    ** 根据上图得到,node.js的node_modules路径在nodePath:** /usr/src/node-red/node_modules

    联合两个配置信息得到,node-red的节点的安装目录为:imagePath/nodePath 即:/var/lib/docker/overlay2/2555ecfed5866e3c56f856cef939f8db4c7bfbb3b698a573d9dfb5d73a1e44f4/diff/usr/src/node-red/node_modules

    1. 进入目录,并将上面的压缩包上传至该目录
    cd /var/lib/docker/overlay2/2555ecfed5866e3c56f856cef939f8db4c7bfbb3b698a573d9dfb5d73a1e44f4/diff/usr/src/node-red/node_modules
    ll
    
    • 1
    • 2

    1

    1. 解压缩:tar -xvf node-red-contrib-loop-processing.tar.gz
      1
    2. 关闭容器任务:docker stop 容器名
    3. 重启容器任务:docker start 容器名
      6
    4. 如果重启仍然不生效,将容器删除后重新创建即可。
    # 关闭容器
    docker stop 容器名
    # 删除容器
    docker rm 容器名
    #重建容器
    sudo docker run -u root:node-red -v /home/node_red/1881:/data --privileged=true -p 1881:1880 --name nodered1 -d nodered/node-red --restart=always
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 刷新浏览器地址:http://ip:1880,可以看到此时node-red-contrib-loop-processing节点已经可以使用了
      7

    回到目录

  • 相关阅读:
    Linux系统信息收集
    CorelDRAW Graphics Suite2024完整版最新功能介绍
    vue使用el-date-picker(选择日期和时间)
    基于 Rainbond 部署 DolphinScheduler 高可用集群
    基于点的数据分析
    安全测试 —— Jmeter 登录接口密码 - rsa加密
    改进YOLOv7系列:最新结合DO-DConv卷积、Slim范式提高性能涨点,打造高性能检测器
    ES6 入门教程 10 对象的扩展 10.1 属性的简洁表示法
    阶段六-Day02-Maven
    边界框回归的魔法:揭秘精准高效的MPDIoU损失函数
  • 原文地址:https://blog.csdn.net/weixin_44462773/article/details/133679660