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

安装 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-memx、docker 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