概述

原本希望使用kamailio+rtpproxy来转发媒体,但是rtpproxy对于多网卡服务器的支持不好,无法正常转发多网卡之间的媒体流。

rtpengine没有官方的docker镜像可以直接使用,只能使用源码自己编一个。

环境

CentOS 7.9

rtpengine 13.1.1.6

下载

目录结构如下。

├── docker-compose.yml

├── Dockerfile

├── rtpengine.mr13.1.1.6

├── sources.list.bookworm

└── sources.list.bullseye

下载源代码,指定版本为13.1.1.6。

git clone https://github.com/sipwise/rtpengine.git rtpengine.mr13.1.1.6 -b mr13.1.1.6

sources.list.bookworm文件内容如下。

deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free

deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free

deb http://mirrors.aliyun.com/debian-security bookworm-security main contrib non-free

dockerfile

dockerfile文件内容如下。

FROM debian:bookworm

COPY ./sources.list.bookworm /etc/apt/sources.list
COPY ./rtpengine.mr13.1.1.6 /usr/local/src/rtpengine RUN apt-get update \
&& apt-get -y --quiet upgrade curl iproute2 \
&& apt-get install -y --no-install-recommends ca-certificates gcc g++ make \
build-essential git libopus-dev libiptc-dev libavfilter-dev \
libevent-dev libpcap-dev libxmlrpc-core-c3-dev markdown libmnl-dev libnftnl-dev \
libjson-glib-dev default-libmysqlclient-dev libhiredis-dev libssl-dev pandoc \
libcurl4-openssl-dev libavcodec-extra gperf libspandsp-dev libwebsockets-dev \
&& cd /usr/local/src \
&& chmod -R 777 /usr/local/src/rtpengine \
&& cd rtpengine/daemon \
&& make && make install \
&& cp /usr/local/src/rtpengine/daemon/rtpengine /usr/local/bin/rtpengine \
&& rm -Rf /usr/local/src/rtpengine \
&& apt-get purge -y --quiet --force-yes --auto-remove ca-certificates gcc g++ make build-essential git markdown \
&& rm -rf /var/lib/apt/* \
&& rm -rf /var/lib/dpkg/* \
&& rm -rf /var/lib/cache/* \
&& rm -Rf /var/log/* \
&& rm -Rf /usr/local/src/* \
&& rm -Rf /var/lib/apt/lists/* CMD ["rtpengine"]

运行命令,创建docker镜像。

sudo docker build --no-cache -t 10.55.55.136:5000/zr/rtpengine:mr13.1.1.6-4 .

配置

kamailio和rtpengine的配置文件都映射到宿主机的/usr/local/kamailio/etc目录。

目录下的配置文件包括dispatcher.list kamailio.cfg rtpengine.conf。

配置内容略过。

启动

编写docker-compose.yml,启动docker容器。

docker-compose.yml内容如下。注意rtpengine启动的时候需要加-f参数,前台运行,否则docker容器会一直重启。

services:
rtpengine:
image: 10.55.55.136:5000/zr/rtpengine:mr13.1.1.6-4
container_name: rtpengine
volumes:
- /usr/local/kamailio/etc:/etc/rtpengine
command: >
/usr/local/bin/rtpengine -f
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
network_mode: "host"
privileged: true
logging:
driver: json-file
options:
max-size: "100m"
max-file: "10"
ulimits:
nproc: 65535
nofile:
soft: 40000
hard: 40000 # Kamailio Service
kamailio:
image: 10.55.55.136:5000/zr/kamailio:5.8.3-bullseye
container_name: kamailio
volumes:
- /usr/local/kamailio/etc:/etc/kamailio
environment:
- TZ=Asia/Shanghai
command: >
-m64 -M8
restart: unless-stopped
network_mode: "host"
logging:
driver: json-file
options:
max-size: "100m"
max-file: "10"
ulimits:
nproc: 65535
nofile:
soft: 40000
hard: 40000
depends_on:
- rtpengine

启动命令。

sudo docker-compose up -d

查看进程和端口,运行正常。

总结

rtpproxy相对rtpengine更容易上手,但是功能也更简单。

kamailio+rtpengine的组合还有很多配置方案,需要慢慢熟悉。

空空如常

求真得真

rtpengine的docker化的更多相关文章

  1. CI Weekly #9 | 揭秘阿里 Docker 化实践之路

    2017年悄然而至,对 flow.ci 你有什么新的期待呢?新的一年,flow.ci会越来越强大好用,希望继续得到你的支持与反馈.最近,我们做了如下的「功能优化」与「问题修复」,看看有没有你想要的: ...

  2. Docker化运维方式讲解

    应用迁移需求 应用运维需要考虑的一个重要问题就是迁移, 在不同机器.机房.环境间迁移.迁移的原因有很多, 比如硬件过保(硬件故障), 机房迁移, 应用扩缩容等. 应用迁移的核心需求是: 简单.迁移操作 ...

  3. 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

    前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑.这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应 ...

  4. Docker化tomcat 并且使用maven热部署

    今天没事干 就把自己的tomcat  docker化并且使用maven实现热部署 特别记录一下~ 1.首先进行centos7的安装 就不在记录了 注意的是最好使用centos7 因为docker 依赖 ...

  5. DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路

    2016 年1 月 23 日,北京史上气温最低的一天. 在下午 1 点半的时候,由 DaoCloud 赞助的 2016 年度首次 Docker Meetup 准时开始. 在这次Meetup中,我分享了 ...

  6. FastDfs集群docker化部署

    初识分布式文件系统FastDFS- 1.分布式与集群的区别 区别:集群是个物理形态,分布式是个工作方式.只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道:一个程序或系统,只要运行 ...

  7. 从头认识一下docker-附带asp.net core程序的docker化部署

    从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...

  8. docker化java web应用

    一.简介 Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上.Docker的发展速度和火爆程度着实令人惊叹,一 ...

  9. 部门sonarque代码扫描测试服务器docker化

    部门内部的服务器太多了,打算将对应的测试环境docker化. 转成docker后,以后不管是升级调研还是定制化开发测试都方便,就是事情太多,一直没有抽出身来做,今天处理下并把过程记录下来跟大家分享下. ...

  10. 一步步创建第一个Docker App —— 2. 创建 Docker化 主机

    原文:https://docs.docker.com/engine/getstarted-voting-app/node-setup/ 部署voting app的第一步,是为集群节点(swarm no ...

随机推荐

  1. ufw配置自动管理端口转发和DNAT+MASQUERADE

    端口A转发到本地的端口B 端口A转发到另一台机器的端口B(需借助DNAT) 一般情况下, 我们配置ufw来实现端口转发时会在修改 /etc/ufw/before.rules 文件, 增加*nat部分. ...

  2. C# 中 WebSocket 与 SignalR:实时通信的两种选择

    在现代 Web 应用中,实时通信变得越来越重要.无论是聊天应用.在线游戏.股票行情推送还是协作编辑工具,都需要服务器能够主动向客户端推送数据.在 .NET 生态系统中,WebSocket 和 Sign ...

  3. 正点原子ALPHA开发板使用4.3寸触摸屏LCD驱动实验显示不正常

    显示问题 裸机开发时,驱动教程的PDF里给了4.3寸LCD屏幕的设置参数.如下图所示: 但是按照这个设置,编写设备树dts文件,下载到开发板里,却出现了显示异常,具体来说就是帧率不对,图和字都是歪斜的 ...

  4. P1514 [NOIP 2010 提高组] 引水入城 题解

    题意:P1514 [NOIP 2010 提高组] 引水入城有点复杂,自己看吧. 思路 这里提供一个好像没见过的纯 DP 做法,不需要神秘的证明以及任何脑子,直接顺着思路做即可. 首先判断正确性就是从第 ...

  5. 将 Excel 拼接为 SQL 脚本

    好像半年前,我就有写过将 Excel 数据, 逐条 或 批量 插入 mysql 数据库, 那时候正在建库嘛, 想着弄个脚本来批量刷新和处理. 工具当时用的 pandas, 这个, 强的一批的工具, 无 ...

  6. 第三届LitCTFmisc详解

    Misc Cropping 随波逐流伪加密,得到一堆图片,把图片拼接起来 脚本 import os from PIL import Image def stitch_tiles_horizontall ...

  7. Intellij IDEA 设置JDK版本

    问题描述: 项目JDK版本不对 如果项目JDK版本不兼容,在编译或者启动项目的时候抛出如下异常提示信息: Error:(29, 34) java: -source 1.7 中不支持 lambda 表达 ...

  8. 【非对称加密】详解及Java实现

    非对称加密详解及Java实现 一.非对称加密概述 非对称加密(Asymmetric Cryptography),也称为公钥加密,是一种使用一对密钥(公钥和私钥)进行加密和解密的加密方法.它与对称加密的 ...

  9. 解决Dev c++6版本中文输出乱码问题

    解决Dev c++6.3版本中文输出乱码问题 1.遇到的问题 使用cout输出中文时出现乱码问题 如下图所示: 2.解决方法 找到[工具]--[编译选项]--勾选[编译时加入以下命令]并添加如下代码: ...

  10. ctypes学习 + GearDVFS源码分析(/src/perf_lib)

      最近在尝试复现GearDVFS的代码,代码结构很复杂,由于需要获取硬件信息,作者使用ctypes实现与底层的交互,任务紧迫,开始学习吧! 1. ctypes介绍   资料的来源已经放在了后文的链接 ...