基于Rockylinux 10系统Docker容器安装Frigate简易教程

Linux

20260320173911

安装 Docker 引擎

1. 添加官方仓库

sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

2. 安装核心组件

sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3. 启动并设置开机自启

sudo systemctl --now enable docker

4. (可选)允许非 root 用户使用 Docker

sudo usermod -a -G docker $(whoami)

重新登录后生效,可用 id 验证。

安装frigate

frigate中文文档:https://docs.frigate-cn.video/frigate/

1.官方文档安装教程

docker run -d \                      # 第1行:基础运行指令
    --name frigate-memx \            # 第2行:容器命名
    --restart=unless-stopped \       # 第3行:重启策略
    --mount type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000 \  # 第4行:临时文件系统挂载
    --shm-size=256m \                # 第5行:共享内存配置
    -v /path/to/your/storage:/media/frigate \  # 第6行:存储目录挂载
    -v /path/to/your/config:/config \          # 第7行:配置文件目录挂载
    -v /etc/localtime:/etc/localtime:ro \      # 第8行:时区同步挂载
    -v /run/mxa_manager:/run/mxa_manager \     # 第9行:memx设备管理目录挂载
    -e FRIGATE_RTSP_PASSWORD='password' \      # 第10行:环境变量设置
    --privileged=true \              # 第11行:特权模式
    -p 8971:8971 \                   # 第12行:Web UI端口映射
    -p 8554:8554 \                   # 第13行:RTSP服务端口映射
    -p 5000:5000 \                   # 第14行:备用API端口映射
    -p 8555:8555/tcp \               # 第15行:WebRTC TCP端口映射
    -p 8555:8555/udp \               # 第16行:WebRTC UDP端口映射
    --device /dev/memx0 \            # 第17行:memx硬件设备挂载
    ghcr.io/blakeblackshear/frigate:stable  # 第18行:镜像地址

2.命令含义解释

docker run -d

  • docker run:Docker 核心命令,用于创建并启动一个新容器。
  • -d--detach):后台运行容器(守护进程模式),不会占用当前终端。

--name frigate-memx

  • 给容器指定一个唯一的名称 frigate-memx,方便后续通过 docker stop frigate-memxdocker logs frigate-memx 等命令管理容器,避免使用随机生成的容器名。

--restart=unless-stopped

  • 设置容器的重启策略:除非手动执行 docker stop 停止容器,否则 Docker 守护进程重启(如服务器重启)或容器意外退出时,会自动重启该容器。
  • 其他常见策略:always(总是重启)、on-failure(仅容器异常退出时重启)、no(不重启)。

--mount type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000

  • 挂载临时文件系统(tmpfs)到容器内的 /tmp/cache 目录,tmpfs 存储在内存中,读写速度极快,适合 Frigate 缓存视频帧等临时数据。
  • tmpfs-size=1000000000:限制该临时目录的大小为 10 亿字节(约 954MB),避免占用过多内存。

--shm-size=256m

  • 设置容器的共享内存(/dev/shm)大小为 256MB。Frigate 处理视频流时需要大量共享内存,默认的 64MB 通常不足,需手动调大。

-v /path/to/your/storage:/media/frigate

  • -v--volume):目录挂载(绑定挂载),将宿主机的 /path/to/your/storage 目录映射到容器内的 /media/frigate 目录。
  • 作用:Frigate 录制的视频、截图等持久化数据会存储在宿主机的这个目录,容器删除后数据不会丢失。使用时需替换 /path/to/your/storage 为宿主机实际目录(如 /home/ubuntu/frigate/media

-v /path/to/your/config:/config

  • 将宿主机的配置文件目录映射到容器内的 /config 目录,Frigate 的核心配置文件 config.yml 需放在宿主机的这个目录下。
  • 作用:无需进入容器即可修改配置,修改后重启容器生效。需替换 /path/to/your/config 为宿主机实际配置目录

-v /etc/localtime:/etc/localtime:ro

  • 挂载宿主机的时区文件到容器内,:ro 表示只读模式。
  • 作用:让容器的时间与宿主机保持一致,避免 Frigate 录制的视频时间戳偏移。

-v /run/mxa_manager:/run/mxa_manager

  • 挂载宿主机的 mxa_manager 运行目录到容器内,用于和 memx 硬件设备的管理进程通信,是 memx 硬件加速的必要配置。

-e FRIGATE_RTSP_PASSWORD='password'

  • -e--env):设置容器内的环境变量,这里指定 Frigate 的 RTSP 服务密码为 password,用于访问 RTSP 视频流时的身份验证。

--privileged=true

  • 给容器授予特权模式,让容器拥有几乎和宿主机 root 一样的权限。
  • 作用:Frigate 需要访问宿主机的硬件设备(如 memx0)、网络底层等,普通模式权限不足,需开启特权模式(生产环境需谨慎,仅必要时使用)。

-p 8971:8971

  • -p--publish):端口映射,格式为 宿主机端口:容器端口
  • 映射宿主机的 8971 端口到容器的 8971 端口,用于访问 Frigate 的 Web 管理界面(访问地址:http://宿主机IP:8971)。

-p 8554:8554

  • 映射 RTSP 服务端口,Frigate 会将监控视频流以 RTSP 协议对外提供,可通过 rtsp://宿主机IP:8554/摄像头名称 访问视频流。

-p 5000:5000

  • 备用 API 端口,部分场景下用于 Frigate 的第三方集成(如 Home Assistant)。

-p 8555:8555/tcp-p 8555:8555/udp

  • 映射 WebRTC 协议的 TCP/UDP 端口,WebRTC 用于低延迟的视频实时预览,同时开放 TCP 和 UDP 保证兼容性。

--device /dev/memx0

  • 将宿主机的硬件设备 /dev/memx0(memx 视频加速卡)挂载到容器内,让 Frigate 可以调用该硬件进行视频编解码加速,提升处理性能。

ghcr.io/blakeblackshear/frigate:stable

  • 指定要运行的容器镜像地址:GitHub Container Registry 上的 Frigate 稳定版镜像,stable 是标签,代表稳定版本。

3.运行命令

docker run -d \
    --name frigate-memx \
    --restart=unless-stopped \
    --mount type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000 \
    --shm-size=512m \
    -v /home/frigate/storage:/media/frigate \
    -v /home/frigate/config:/config \
    -v /etc/localtime:/etc/localtime:ro \
    -v /run/mxa_manager:/run/mxa_manager \
    -e TZ='Asia/Shanghai' \
    -e FRIGATE_RTSP_PASSWORD='myP1ssw0rd' \
    --privileged=true \
    -p 8971:8971 \
    -p 8554:8554 \
    -p 5000:5000 \
    -p 8555:8555/tcp \
    -p 8555:8555/udp \
    docker.cnb.cool/frigate-cn/frigate:stable  #使用国内镜像

4.使用说明

http://\<服务器IP>:5000, 直接访问后台,不要暴露此端口

https://\<服务器IP>:8971, 登录页面,如需远程访问,映射此端口

摄像头rtsp协议示例,如下:

rtsp://admin:DEVICE@192.168.10.133:554/cam/realmonitor?channel=1&subtype=0