1、创建 bridge 网络并指定 IP 区间

#创建自定义网络
docker network create --driver bridge --subnet 172.0.0.0/16 srs_network#查看已存在网络
docker network ls

2、创建数据目录

# 创建数据目录
mkdir -p /home/docker/srs4

3、安装SRS

3.1、 创建配置文件

# 安装并启动 srs
docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
--name srs \
ossrs/srs:v4.0.85

运行容器会直接停留在容器运行界面,通过Ctrl+P+Q可后台形式退出容器

3.2、 负责配置文件,同时删除容器,重新运行容器并配置挂载文件

# 把容器中的配置文件复制出来
docker cp -a srs:/usr/local/srs/conf /home/docker/srs4/conf# 把容器中的数据文件复制出来
docker cp -a srs:/usr/local/srs/objs /home/docker/srs4/objs# 删除 srs 容器
docker rm -f srs

进入/home/docker/srs4 可查看配置文件是否复制成功

3.3、重新启动SRS

docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
--name srs \
--network srs_network \
--ip 172.0.0.35 \
--restart=always \
-v /home/docker/srs4/conf/:/usr/local/srs/conf/ \
-v /home/docker/srs4/objs/:/usr/local/srs/objs/ \
ossrs/srs:v4.0.85

运行容器会直接停留在容器运行界面,通过Ctrl+P+Q可后台形式退出容器

4、查看容器是否成功运行,且服务是否可用

4.1、查看服务

# 查看srs服务是否启动成功
docker ps--------
[root@qtouch-prd-test conf]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS                                                                    NAMES
2b141ebf6cc8   ossrs/srs:v4.0.85   "./objs/srs -c conf/…"   13 minutes ago   Up 13 minutes   0.0.0.0:1935->1935/tcp, 0.0.0.0:1985->1985/tcp, 0.0.0.0:8080->8080/tcp   srs

4.2、查看SRS控制台

# SRS 控制台访问地址 IP 为服务器ip
http://[IP]:8080

注意

要想外网可以访问,需要打开1935、8080、1985 三个端口号

此时流服务器已经可以使用,如果需要自定义配置文件可继续按照下面步骤。

5、自定义配置文件

/home/docker/srs4/conf 创建自己的配置文件 srs.my.conf

# SRS 参考配置listen              1935;
max_connections     1000;
srs_log_tank        file;
srs_log_file        ./objs/srs.log;
daemon              on;
http_api {enabled         on;listen          1985;
}
http_server {enabled         on;listen          8080;dir             ./objs/nginx/html;# 开启 https 支持,需要开放 8088端口# https {# enabled on;# listen 8088;# key ./conf/xxxx.key;# cert ./conf/xxxx.crt;# }
}
vhost __defaultVhost__ {# http-flv设置http_remux{enabled    on;mount      [vhost]/[app]/[stream].flv;hstrs      on;}# hls设置hls {enabled         on;hls_fragment    1;hls_window      2;hls_path        ./objs/nginx/html;hls_m3u8_file   [app]/[stream].m3u8;hls_ts_file     [app]/[stream]-[seq].ts;}# dvr设置dvr {enabled             off;dvr_path            ./objs/nginx/html/[app]/[stream]/[2006]/[01]/[02]/[timestamp].flv;dvr_plan            segment;dvr_duration        30;dvr_wait_keyframe   on;}# rtc 设置rtc {enabled     on;bframe      discard;}# SRS支持refer防盗链:检查用户从哪个网站过来的。譬如不是从公司的页面过来的人都不让看。refer {# whether enable the refer hotlink-denial.# default: off.enabled         off;# the common refer for play and publish.# if the page url of client not in the refer, access denied.# if not specified this field, allow all.# default: not specified.all           github.com github.io;# refer for publish clients specified.# the common refer is not overrided by this.# if not specified this field, allow all.# default: not specified.publish   github.com github.io;# refer for play clients specified.# the common refer is not overrided by this.# if not specified this field, allow all.# default: not specified.play      github.com github.io;}# http 回调http_hooks {# 事件:发生该事件时,即回调指定的HTTP地址。# HTTP地址:可以支持多个,以空格分隔,SRS会依次回调这些接口。# 数据:SRS将数据POST到HTTP接口。# 返回值:SRS要求HTTP服务器返回HTTP200并且response内容为整数错误码(0表示成功),其他错误码会断开客户端连接。# whether the http hooks enable.# default off.enabled         on;# 当客户端连接到指定的vhost和app时on_connect      http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients;# 当客户端关闭连接,或者SRS主动关闭连接时on_close        http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients;# 当客户端发布流时,譬如flash/FMLE方式推流到服务器on_publish      http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams;# 当客户端停止发布流时on_unpublish    http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams;# 当客户端开始播放流时on_play         http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;# 当客户端停止播放时。备注:停止播放可能不会关闭连接,还能再继续播放。on_stop         http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;# 当DVR录制关闭一个flv文件时on_dvr          http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs;# 当HLS生成一个ts文件时on_hls          http://127.0.0.1:8085/api/v1/hls http://localhost:8085/api/v1/hls;# when srs reap a ts file of hls, call this hook,on_hls_notify   http://127.0.0.1:8085/api/v1/hls/[app]/[stream]/[ts_url][param];}
}

6、通过自定义配置文件启动

docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
--name srs \
--network src_network \
--ip 172.0.0.35 \
--restart=always \
-v /home/docker/srs4/conf/:/usr/local/srs/conf/ \
-v /home/docker/srs4/objs/:/usr/local/srs/objs/ \
ossrs/srs:v4.0.85 \
./objs/srs -c conf/srs.my.conf

基于Docker部署SRS流媒体服务相关推荐

  1. 基于docker部署的微服务架构(九): 分布式服务追踪 Spring Cloud Sleuth

    为什么80%的码农都做不了架构师?>>>    前言 微服务架构中完成一项功能经常会在多个服务之间远程调用(RPC),形成调用链.每个服务节点可能在不同的机器上甚至是不同的集群上,需 ...

  2. 推荐一款基于docker部署的个人免费笔记工具wiznote

    推荐一款基于docker部署的个人免费笔记工具wiznote 作为一个爱写作爱折腾的程序员,在做某个事情的时候,脑子里总是会联想并且不断蹦出各种奇怪的创意和想法,但是这些想法很多时候都是一闪而逝,事情 ...

  3. Rocketmq基于docker部署并在Springboot中接入

    服务器部署 关于在服务器上安装docker并启动守护进程,这里不再赘述,此处假设服务器已经安装完成docker. 安装并运行nameserver docker run -d -p 9876:9876 ...

  4. docker 打包mysql_基于docker部署mysql的数据持久化问题

    本人最近在使用docker部署mysql时,在持久化mysql数据时遇到了一个有趣的问题,将排查过程及思考记录在这里,以备后查. 先简单描述下我遇到的问题:在mysql容器中创建了两个数据库,然后使用 ...

  5. 云计算入门科普系列:基于Docker部署LNMP架构

    一. 什么是 docker  环境配置的难题  软件开发最大的麻烦事之一,就是环境配置.用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?  用户必须保证两件事:操作系统的设置,各种 ...

  6. 基于Docker部署LNMP架构

    一. 什么是 docker  环境配置的难题  软件开发最大的麻烦事之一,就是环境配置.用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?  用户必须保证两件事:操作系统的设置,各种 ...

  7. pg安装部署linux_简简单单基于docker部署微服务网关

    ❝ 本文整理于今年3月,收录在个人开源仓库JavaScriptCollection中,其中很多概念不乏借鉴.摘抄自官网,便于复习相关概念,有兴趣的可以直接去仓库Clone文档学习.参考! ❞ 基本概念 ...

  8. 微服务开发及部署_简简单单基于docker部署微服务网关

    ❝ 本文整理于今年3月,收录在个人开源仓库JavaScriptCollection中,其中很多概念不乏借鉴.摘抄自官网,便于复习相关概念,有兴趣的可以直接去仓库Clone文档学习.参考! ❞ 基本概念 ...

  9. 基于docker部署 opentsdb + grafana数据监控系统

    文章目录 0 前言 1 docker opentsdb部署 2 docker grafana部署 3 python client写入方案 4 数据持久化方案 5 云服务器部署踩坑事项 参考材料 0 前 ...

最新文章

  1. 洛谷 - P2045 - 方格取数加强版 - 费用流
  2. python详细安装教程环境配置-[Python] 安装及环境配置
  3. 经纬度坐标系与UTM MGRS坐标系之间的转换 c# 版本
  4. jmeter聚个报告怎么看qps_Jmeter 使用笔记之 html 报告扩展(一)
  5. 我愿意参加Qcon 2010大会,你愿意吗?
  6. 「Leetcode」242. 有效的字母异位词:可以拿数组当哈希表来用,但哈希值不要太大!
  7. 华泰证券首席培训张继强 债市分析框架PPT
  8. 微信小程序获取手机号(Java后台实现)
  9. QIIME 2教程. 01简介和安装Introduction Install(2021.2)
  10. CAD如何一键解决批量打印
  11. 应用ImageJ对荧光图片进行半定量分析
  12. Linux实战之ssl自签名证书
  13. 删除脚注或尾注的横线
  14. Django优化(减少数据库查询次数)---select_related和prefetch_related的使用
  15. Natural Cleaning Solutions
  16. 【自动驾驶】如何利用深度学习搭建一个最简单的无人驾驶系统
  17. centos 安装scp
  18. 什么是光端机,什么是PDH光端机,什么是SDH,什么是SPDH
  19. direct wifi 投屏_【教程】Microsoft Wi-Fi Direct Virtual关闭方法
  20. fpga在线升级 linux_以Flash控制器为核心的FPGA在线更新功能实现设计流程介绍

热门文章

  1. Adobe Audition将音频转化为PCM
  2. linux hexo使用教程,Linux下使用Hexo搭建github博客(示例代码)
  3. 焦作市宇华学校2021高考成绩查询,2021年焦作高考状元是谁分数多少分,历年焦作高考状元名单...
  4. 开始甲骨文培训了,第一天说了一下上课学习规矩及计算机基础
  5. CompletableFuture的正常,异常,timeout和cancel
  6. 安全大数据的7个V——大数据基础问题与信息安全的交叉探究
  7. JAVA String.format详解
  8. 学通java的24堂课_学通Java的24堂课
  9. Log4j 2.x入门
  10. CButton类的继承+重写--本类来自孙鑫老师C++课堂