当前位置: 首页 > news >正文

Docker部署ZLMediaKit流媒体服务器并自定义配置指南

以下是基于Docker安装ZLMediaKit并修改config.ini配置的完整方案。


一、Docker 快速安装 ZLMediaKit

1. 拉取官方镜像

docker pull zlmediakit/zlmediakit:master

2. 首次运行临时容器

docker run -d --name zlmediakit-tmp zlmediakit/zlmediakit:master

3. 提取默认配置文件

# 创建宿主机配置目录
mkdir -p /opt/zlmediakit/conf
# 复制容器内配置文件到宿主机
docker cp zlmediakit-tmp:/opt/media/conf/config.ini /opt/zlmediakit/conf/
# 删除临时容器
docker rm -f zlmediakit-tmp

二、关键配置修改指南

1. 编辑配置文件

vi /opt/zlmediakit/conf/config.ini

2. 必改项

[api]
secret = your_custom_secret  # 必须修改默认值

[rtp_proxy]
port_range = 30000-30500     # 端口范围需与容器映射一致

[http]
port = 80                    # 保持与容器映射端口对应 宿主机映射到8080
allow_ip_range = 0.0.0.0/0   # 允许所有IP访问
ssl_port=443                 # 若开启HTTPS

[rtmp]
port=1935                    # 必须与Docker映射的容器端口一致

[websocket]
port=9000                    # 若开启WebSocket

[general]
mediaServerId = xWXfsArzAcUCSkVz  #服务器唯一id 可自定义

3. 可选优化项

[general]
mediaServerId=0001          # 集群部署时需区分ID

[hook]
enable_flow_report=1        # 开启流量统计

三、正式运行容器(两种方式)

记得清理旧的容器

如果之前运行过同名容器,先停止并删除旧容器:

docker stop zlmediakit && docker rm zlmediakit

以下中 30000-30500 端口,可缩小范围

以下端口都可修改,但是必须与config.ini 一致

在运行ZLMediaKit的Docker容器时,需要根据流媒体服务需求开放以下端口。以下是详细的端口说明和配置建议:


必开核心端口

端口/范围协议用途说明配置示例
1935TCPRTMP协议(推流/拉流)-p 1935:1935
80TCPHTTP协议(HLS/HTTP-FLV播放)-p 8080:80(宿主机端口可调)
554TCPRTSP协议(实时流传输)-p 554:554
30000-30500TCP/UDPRTP代理端口范围(WebRTC/RTP转发)-p 30000-30500:30000-30500/tcp
-p 30000-30500:30000-30500/udp
方式1:直接运行
docker run -d --name zlmediakit \
-p 1935:1935 -p 8080:80 -p 554:554 \
-p 30000-30500:30000-30500/tcp \
-p 30000-30500:30000-30500/udp \
-v /opt/zlmediakit/conf/config.ini:/opt/media/conf/config.ini \
zlmediakit/zlmediakit:master
方式2:docker-compose部署(推荐)​
# docker-compose.yml
version: '3'
services:
  zlmediakit:
    image: zlmediakit/zlmediakit:master
    volumes:
      - /opt/zlmediakit/conf/config.ini:/opt/media/conf/config.ini
    ports:
      - "1935:1935"
      - "8080:80"
      - "554:554"
      - "30000-30500:30000-30500/tcp"
      - "30000-30500:30000-30500/udp"
    restart: always

启动命令:

docker-compose up -d

四、验证配置生效

1. 查看实时日志

docker logs -f zlmediakit | grep "config loaded"
# 应显示"config loaded from /opt/media/conf/config.ini"

**2. 访问管理界面**
浏览器打开`http://宿主机IP:8080`,若显示ZLMediaKit欢迎页且无IP白名单错误,则配置成功

**3. API接口测试**
```bash
curl http://宿主机IP:8080/api/defaultAuth
# 返回的secret应与配置一致

五、热更新配置(无需重启)

通过API触发配置重载:

curl "http://宿主机IP:8080/api/reloadConfig?secret=your_custom_secret"

六、Docker 常用命令

一、容器管理命令
  1. 启动容器

    docker start [容器名/ID]

    启动一个已经存在的容器。

  2. 停止容器

    docker stop [容器名/ID]

    停止一个正在运行的容器。

  3. 重启容器

    docker restart [容器名/ID]

    重启一个容器。

  4. 运行容器

    docker run [选项] [镜像名]

    创建并启动一个新的容器。常用选项包括:

    • -d:后台运行容器。
    • --name:为容器指定一个名称。
    • -p:指定端口映射。
    • -v:挂载卷。
  5. 列出容器

    docker ps

    列出所有正在运行的容器。

    docker ps -a

    列出所有容器,包括停止的容器。

  6. 删除容器

    docker rm [容器名/ID]

    删除一个或多个已经停止的容器。

  7. 进入容器

    docker exec -it [容器名/ID] /bin/bash

    在运行中的容器内执行一个新的命令,通常用于进入容器的交互式Shell。

  8. 查看容器日志

    docker logs [容器名/ID]

    获取和查看容器的日志输出。

  9. 查看容器详细信息

    docker inspect [容器名/ID]

    获取容器的详细信息,包括配置、状态等。

二、镜像管理命令
  1. 列出镜像

    docker images

    列出本地所有的Docker镜像。

  2. 拉取镜像

    docker pull [镜像名]:[标签]

    从Docker仓库中拉取指定的镜像到本地。如果不指定标签,则默认拉取最新版本。

  3. 搜索镜像

    docker search [镜像名]

    在Docker仓库中搜索指定的镜像。

  4. 删除镜像

    docker rmi [镜像名/镜像ID]

    删除一个或多个本地镜像。

  5. 构建镜像

    docker build -t [镜像名]:[标签] [Dockerfile路径]

    根据Dockerfile构建一个新的Docker镜像。

三、其他常用命令
  1. 查看Docker版本

    docker version

    显示Docker客户端和服务端的版本信息。

  2. 显示Docker系统信息

    docker info

    显示Docker的系统级信息,包括当前的镜像和容器数量等。

  3. 启动Docker服务

    sudo systemctl start docker

    启动Docker服务。

  4. 停止Docker服务

    sudo systemctl stop docker

    停止Docker服务。

  5. 重启Docker服务

    sudo systemctl restart docker

    重启Docker服务。

  6. 设置Docker开机自启

    sudo systemctl enable docker

    设置Docker服务在开机时自动启动。

注意事项

  1. 端口映射一致性:容器内外端口必须对应,如config.ini中http端口80对应宿主机的8080
  2. 文件权限:确保宿主机配置文件权限为644
  3. 多环境配置:可通过-v挂载不同配置文件目录实现开发/生产环境切换

这是作者相关的配置,可参考:

[api]
secret = 2hL9M4kQ7wXjFnRt3zP5Q8sV4bY1DuA2  # 必须修改默认值

[rtp_proxy]
port_range = 30120-30125     # 端口范围需与容器映射一致

[http]
port = 8086                  # 保持与容器映射端口对应 宿主机映射到8080
allow_ip_range = 0.0.0.0/0   # 允许所有IP访问
ssl_port=443                 # 若开启HTTPS

[rtmp]
port=1935                    # 必须与Docker映射的容器端口一致

[websocket]
port=9000                    # 若开启WebSocket

[general]
mediaServerId = HnYjpLtzGdKQWmBv  #服务器唯一id 可自定义
docker run -d --name zlmediakit \
-p 1935:1935 -p 8086:8086 -p 554:554 \
-p 30120-30125:30120-30125/tcp \
-p 30120-30125:30120-30125/udp \
-v /opt/zlmediakit/conf/config.ini:/opt/media/conf/config.ini \
zlmediakit/zlmediakit:master

安装有什么问题,可在评论区讨论。

相关文章:

  • Java内存的堆(堆内、堆外)、栈含义理解笔记
  • 实时记录SQL注入靶场心得(labs1-10)
  • WPF-3天快速WPF入门并达到企业级水准
  • Readability.js 与 Newspaper提取网页内容和元数据
  • 四、表关系与复杂查询
  • 【Python修仙编程】(二) Python3灵源初探(3)
  • MySQL—密码设置相关
  • VAE变分自编码器的初步理解
  • 零基础转行机器视觉,应该学halcon,opencv,海康visionmaster,康耐视visionpro哪一个好
  • DDS技术分享(二)---IDL
  • [ISP] AE 自动曝光
  • x64汇编下过程参数解析
  • 性能测试的脚本录制
  • Redis除了做缓存还能做什么?
  • springai系列(一):接入deepseek问答,扫坑记录
  • 猿大师播放器:HTML内嵌VLC播放RTSP视频流,无需转码,300ms级延迟,碾压服务器转码方案
  • 团队协作中的分支合并:构建高效开发流程的关键
  • 【笔记】论文阅读方法(AI大模型)
  • 半导体晶圆制造良率提升的指标体系设计
  • mapbox基础,使用geojson加载heatmap热力图层
  • 建设免费电影网站/seo优化网站优化排名
  • 衡水seo_衡水网站建设-燕丰收/免费seo免费培训
  • wap手机建站平台/推广营销平台
  • 怎么做网站弹窗/百度推广一年大概需要多少钱
  • 地级市政府网站建设评估/安装百度到手机桌面
  • 化学试剂网站建设/杭州市优化服务