一 docker部署方式详解

1.解析旧版的部署方式

解析旧版docker命令

docker run -d \ -d表示后台运行,容器启动后不会占用当前终端
  --name easynvr \ 指定容器名称,方便后续通过该名称管理容器服务(例如:docker stop easynvr)
  --restart always \ 设置容器重启策略,除手动停止外,Docker都尝试重启该服务,Docker服务重启后也会尝试重启该服务
  --network host \ 设置容器网络模式为host,easynvr推荐使用host,容器内的服务监听的端口会直接绑定到宿主机上(无需 -p 映射端口)。除此之外还有bridge模式需要自己手动设置端口映射,非常不方便,不建议使用
  --log-opt max-size=50M \ 设置日志最大容量为50m
  -v "$PWD/configs:/app/configs" \ 宿主机与容器之间的目录挂载,实现数据持久化
  -v "$PWD/logs:/app/logs" \
  -v "$PWD/temporary:/app/temporary" \
  -v "$PWD/r:/app/r" \
  -v "$PWD/stream:/app/stream" \
  registry.cn-shanghai.aliyuncs.com/rustc/easynvr_amd64:latest   // amd 版本,拉取镜像的地址
  或
  registry.cn-shanghai.aliyuncs.com/rustc/easynvr_arm64:latest   // arm 版本

2.为什么要升级成新的docker部署?

旧命令部署图解
image-20260129160821776

旧命令只会挂载configs,logs,temporary,r,stream这五个目录,值就会存在目录以外的文件或者其他目录因为容器重装从而导致丢失的风险,而且会导致一些服务的不可用。例如,用于授权的private.pem文件会丢失,新的服务—插件扩展不可用,因为没有目录extensions没有挂载。总之,旧版docker部署的会存在一些bug,影响使用体验及产品功能

新命令部署图解

docker run -d \
  --name easynvr \
  --restart always \
  --network host \
  --log-opt max-size=50M \
  -v "$(pwd)":/app \
  -v "$(pwd)/r:/app/r" \
  -v /vol1/1000/CloudDrive2/Video/redis:/app/video \
  registry.cn-shanghai.aliyuncs.com/rustc/easynvr_amd64:latest   // amd 版本
  或
  registry.cn-shanghai.aliyuncs.com/rustc/easynvr_arm64:latest   // arm 版本

新命令图解

image-20260129163229725

这样容器内的数据和配置都被持久化到物理机中,即使容器被删除了,数据和配置已经全部备份到物理机中

3.如何转成新版docker服务

在对应的服务物理机目录下执行docker命令或者使用根据compose文件重新创建容器即可

相关文档教程在csdn,视频教程在b站,视频号等
文档教程

视频教程

(注:对于授权,如果是文件授权的,需要重新下载一份文件,在线授权不会受影响)

二 二进制部署转docker部署

1.为什么要转?

对于一些用户,下载的官网amd64的包部署到一些nas中,然后发现,部署和管理的过程较为麻烦,需要ssh连接,也需要些计算机知识

于是对于一些支持docker管理的nas,将二进制部署的服务转成docker部署,非常方便管理 ,一些知名nas厂商都有Docker服务

2.如何操作呢?

二进制部署流程,繁琐
image-20260129165900115
方式一通过在物理机部署文件夹内执行命令

停止服务,修改配置文件服务端口号(用于验证配置是否被继承),然后在该目录下执行命令即可

image-20260129170517644

docker run -d \
  --name easynvr \
  --restart always \
  --network host \
  --log-opt max-size=50M \
  -v "$(pwd)":/app \
  -v "$(pwd)/r:/app/r" \
  -v /vol1/1000/CloudDrive2/Video/redis:/app/video \
  registry.cn-shanghai.aliyuncs.com/rustc/easynvr_amd64:latest   

image-20260129170419725

image-20260129170321788

方式二通过compose文件

上传compose文件或者创建文件,复制
开始前依旧将原来端口改为10001(该步只做验证,不是必须)

services:
  app:
    # AMD 架构
    image: registry.cn-shanghai.aliyuncs.com/rustc/easynvr_amd64:latest
    # ARM 架构请注释下面代码
    # image: registry.cn-shanghai.aliyuncs.com/rustc/easynvr_arm64:latest
    restart: always
    # linux 请使用 host 模式
    network_mode: host
    # MacOS/Windows 请注释上面的 host 模式,并解开以下注释
    # ports:
    #   - 10000:10000/tcp
    #   - 10010:10010/tcp
    #   - 28080:28080/tcp
    #   - 24433:24433/tcp
    #   - 25544:25544/tcp
    #   - 21930:21930/tcp

    #   - 15060:15060/tcp
    #   - 15060:15060/udp

    #   - 24888:24888/tcp
    #   - 24888:24888/udp

    #   - 30000-30500:30000-30500/tcp
    #   - 30000-30500:30000-30500/udp
    logging:
      options:
        max-size: "50M"
    volumes:
      - ./:/app
      - ./r:/app/r
      - /vol1/1000/CloudDrive2/Video/redis:/app/video

执行

docker compose pull && docker compose up -d

image-20260129175808749

访问10001端口,服务正常,配置生效

image-20260129171403575

完成以上步骤,然后就能在nas中使用图形化界面管理docker服务了
image-20260129171440285

更多推荐