Docker运行SRS时找不到./objs目录及Docker操作、本地启动疑问
SRS相关问题解答
1. 配置文件中提及的./objs目录找不到
官方SRS Docker镜像采用预编译的二进制分发方式,./objs是源码编译阶段生成的临时目录(用于存放编译产物、临时日志等),容器镜像内不会包含该源码编译目录。
- 若配置文件中引用了
./objs路径,需替换为容器内的实际工作路径,默认SRS容器工作目录为/usr/local/srs,可改为/usr/local/srs/objs(部分镜像会保留该目录用于存放运行时文件)。 - 如需持久化相关文件,可通过Docker挂载本地目录到容器内对应路径,例如启动命令添加:
本地目录可自行创建并赋予对应权限,容器内会同步使用该目录。-v /your/local/objs:/usr/local/srs/objs
2. Docker镜像/容器的简便编辑方式
编辑运行中的容器
- 临时调试修改:执行以下命令进入容器终端,直接编辑文件(若容器内无编辑器,可根据镜像系统安装,例如
pacman -S nano或apt install nano):
注意:此类修改为临时生效,容器重启后会丢失,仅适合调试场景。docker exec -it <容器ID/名称> /bin/bash - 持久化修改:将需要编辑的配置文件挂载到本地,启动容器时添加挂载参数,例如挂载SRS主配置文件:
直接在本地编辑配置文件后,重启容器或让SRS重载配置(-v /your/local/srs.conf:/usr/local/srs/conf/srs.confdocker exec <容器ID> /usr/local/srs/bin/srs reload)即可生效。
编辑镜像
- 基于现有容器生成自定义镜像:修改容器内容后,执行以下命令生成新镜像:
后续可直接使用该自定义镜像启动容器。docker commit <修改后的容器ID> your-custom-srs:v1 - 使用Dockerfile构建规范镜像:编写Dockerfile基于官方SRS镜像扩展,例如添加编辑器、替换配置文件:
执行FROM ossrs/srs:latest RUN pacman -Sy && pacman -S nano --noconfirm COPY ./your-srs.conf /usr/local/srs/conf/srs.confdocker build -t your-custom-srs:v1 .构建镜像,这种方式可重复构建,适合长期维护自定义镜像。
3. 本地安装SRS启动即退出问题排查
- 指定配置文件启动并查看日志:执行以下命令启动SRS,同时指定配置文件,便于定位报错:
查看日志文件(默认路径为/usr/bin/srs -c /etc/srs/srs.conf/var/log/srs/或配置文件中log_tank指定的路径),根据报错信息定位问题(如端口占用、目录权限不足等)。 - 检查端口占用:Docker运行的SRS可能占用了1935(RTMP)、8080(HTTP-FLV)等默认端口,执行以下命令检查:
若端口被占用,需停止Docker容器或修改本地SRS配置文件的端口。netstat -tulpn | grep -E '1935|8080' - 验证目录权限:确保SRS运行所需的日志目录、临时文件目录有读写权限,例如:
sudo chown -R srs:srs /var/log/srs/
内容的提问来源于stack exchange,提问作者Eric Steinberg
相关产品推荐
相关产品推荐

