以下是基于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 端口,可缩小范围,一定要大于50个,根据实际的业务调整
以下端口都可修改,但是必须与config.ini 一致
在运行ZLMediaKit的Docker容器时,需要根据流媒体服务需求开放以下端口。以下是详细的端口说明和配置建议:
必开核心端口
端口/范围 | 协议 | 用途说明 | 配置示例 |
---|---|---|---|
1935 | TCP | RTMP协议(推流/拉流) | -p 1935:1935 |
80 | TCP | HTTP协议(HLS/HTTP-FLV播放) | -p 8080:80 (宿主机端口可调) |
554 | TCP | RTSP协议(实时流传输) | -p 554:554 |
30000-30500 | TCP/UDP | RTP代理端口范围(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 常用命令
一、容器管理命令
-
启动容器
docker start [容器名/ID]
启动一个已经存在的容器。
-
停止容器
docker stop [容器名/ID]
停止一个正在运行的容器。
-
重启容器
docker restart [容器名/ID]
重启一个容器。
-
运行容器
docker run [选项] [镜像名]
创建并启动一个新的容器。常用选项包括:
-d
:后台运行容器。--name
:为容器指定一个名称。-p
:指定端口映射。-v
:挂载卷。
-
列出容器
docker ps
列出所有正在运行的容器。
docker ps -a
列出所有容器,包括停止的容器。
-
删除容器
docker rm [容器名/ID]
删除一个或多个已经停止的容器。
-
进入容器
docker exec -it [容器名/ID] /bin/bash
在运行中的容器内执行一个新的命令,通常用于进入容器的交互式Shell。
-
查看容器日志
docker logs [容器名/ID]
获取和查看容器的日志输出。
-
查看容器详细信息
docker inspect [容器名/ID]
获取容器的详细信息,包括配置、状态等。
二、镜像管理命令
-
列出镜像
docker images
列出本地所有的Docker镜像。
-
拉取镜像
docker pull [镜像名]:[标签]
从Docker仓库中拉取指定的镜像到本地。如果不指定标签,则默认拉取最新版本。
-
搜索镜像
docker search [镜像名]
在Docker仓库中搜索指定的镜像。
-
删除镜像
docker rmi [镜像名/镜像ID]
删除一个或多个本地镜像。
-
构建镜像
docker build -t [镜像名]:[标签] [Dockerfile路径]
根据Dockerfile构建一个新的Docker镜像。
三、其他常用命令
-
查看Docker版本
docker version
显示Docker客户端和服务端的版本信息。
-
显示Docker系统信息
docker info
显示Docker的系统级信息,包括当前的镜像和容器数量等。
-
启动Docker服务
sudo systemctl start docker
启动Docker服务。
-
停止Docker服务
sudo systemctl stop docker
停止Docker服务。
-
重启Docker服务
sudo systemctl restart docker
重启Docker服务。
-
设置Docker开机自启
sudo systemctl enable docker
设置Docker服务在开机时自动启动。
注意事项
- 端口映射一致性:容器内外端口必须对应,如
config.ini
中http端口80对应宿主机的8080 - 文件权限:确保宿主机配置文件权限为644
- 多环境配置:可通过
-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
安装有什么问题,可在评论区讨论。