freeswitch的docker构建过程

概述
Docker是一个开源的应用容器引擎,可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,并在任何安装有Docker的机器上运行。
Docker 使你能够将应用程序与基础架构分开,从而可以快速交付软件。
借助 Docker,你可以与管理应用程序相同的方式来管理基础架构。
通过利用 Docker 的方法来快速交付,测试和部署代码,你可以大大减少编写代码和在生产环境中运行代码之间的延迟。
本文的目的是了解最基本的docker构建过程,以便掌握的docker基本知识和原理,暂不涉及dockerfile、compose、集群等信息。
开发环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.8.7
GCC:4.8.5
安装docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
systemctl start docker
docker常用命令
docker version docker images docker ps docker container ls
构建freeswitch的docker镜像
拉取最新的centos镜像
docker pull centos:centos7
查看
docker images
运行容器
docker run -itd --name centos7-test centos:centos7
通过exec命令进入centos容器
docker exec -it centos7-test /bin/bash
以下命令在dockers容器中运行
yum刷新
yum makecache yum update
下载freeswitch1.8.7开发库源码
yum install git git clone -b v1.8 https://github.com/signalwire/freeswitch.git freeswitch-1.8.7 cd freeswitch-1.8.7 chmod 777 * -R sh support-d/prereq.sh ./bootstrap.sh -j ./configure --enable-portable-binary --with-gnu-ld --with-python --with-erlang --with-openssl --enable-core-odbc-support --enable-zrtp make make install
修改 /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml
<!-- RTP port range -->
<param name="rtp-start-port" value="10000"/>
<param name="rtp-end-port" value="12000"/>
退出容器
exit
以下命令在docker宿主机运行
更新镜像文件
docker commit -m="fs1.8.7 register" -a="zr" centos7-test zr/centos7-freeswitch1.8.7
启动注册容器
docker run -itd -p 192.168.0.152:5060:5060/udp -p 192.168.0.152:10000-12000:10000-12000/udp --name centos7-reg zr/centos7-freeswitch1.8.7 /usr/local/freeswitch/bin/freeswitch -nonat
测试
使用eyebean注册测试。
分别注册1001和1002用户。
使用1001拨打1002,可以呼通,1002可以正常接听。
遗留问题
媒体流有问题,双方没有声音。
挂机信令也有问题,无法送达对方。
初步判断是fs的local地址未设置造成。
另外,构建完成的docker镜像比较大,在网络上传输会比较慢,后期可以通过一些镜像瘦身的技术降低文件大小,使得发布包更加好用。
空空如常
求真得真
freeswitch的docker构建过程的更多相关文章
- Docker容器构建过程的安全性分析
来源:嘶吼专业版 ID:Pro4hou DevOps概念的流行跟近些年微服务架构的兴起有很大关系,DevOps是Dev(Development)和Ops(Operations)的结合,Dev负责开发, ...
- Docker学习(12) Dockerfile构建过程
Dockerfile的构建过程 以上为构建缓存
- 使用Docker构建redis集群--最靠谱的版本
1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...
- 使用Docker构建持续集成与自动部署的Docker集群
为什么使用Docker " 从我个人使用的角度讲的话 部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...
- Dockerfile与Docker构建流程解读
摘要 本文主要讨论了对docker build的源码流程进行了梳理和解读,并分享了在制作Dockerfile过程中的一些实践经验,包括如何调试.优化和build中的一些要点.另外,还针对现有Docke ...
- selenium结合docker构建分布式测试环境
selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...
- 使用Spring Cloud和Docker构建微服务架构
原文:https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do 作者:Alexander Lukyan ...
- 两种简单的方法Docker构建LANMP
在初步入门学习Docker的过程中一步步了解了Docker容器在团队开发中所起到的作用,一边学习一边操作基本命令,当然到现在还处于一个擦边的入门阶段. 尝试一下用Docker构建一个集成开发环境. S ...
- Docker 构建映像
.用docker commit构建映像 .docker run -i -t centos /bin/bash //启动一个容器,启动后默认进入该窗口的bash进程 .yum install -y ep ...
随机推荐
- SpringCloudAlibaba - 整合 Nacos 实现服务注册与发现
目录 前言 环境 Nacos是什么? 服务发现原理 搭建 Nacos Server Nacos Server 下载地址 Nacos Server 的版本选择 运行 Nacos Server Nacos ...
- 还不知道PHP有闭包?那你真OUT了
做过一段时间的Web开发,我们都知道或者了解JavaScript中有个非常强大的语法,那就是闭包.其实,在PHP中也早就有了闭包函数的功能.早在5.3版本的PHP中,闭包函数就已经出现了.到了7以及后 ...
- 一起学习PHP的runkit扩展如何使用
这次又为大家带来一个好玩的扩展.我们知道,在 PHP 运行的时候,也就是部署完成后,我们是不能修改常量的值,也不能修改方法体内部的实现的.也就是说,我们编码完成后,将代码上传到服务器,这时候,我们想在 ...
- canal源码之BooleanMutex(基于AQS中共享锁实现)
在看canal源码时发现一个有趣的锁实现--BooleanMutex 这个锁在canal里面多处用到,相当于一个开关,比如系统初始化/授权控制,没权限时阻塞等待,有权限时所有线程都可以快速通过 先看它 ...
- postman 插件安装
本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 打开官网,https:/ ...
- 防刷功能的实现(thinkphp5)
$seconds = '3'; //时间段[秒] $refresh = '3';//最大次数 $cur_time = time(); if(Session::get('refresh_times')) ...
- deepin(debian)中双网卡上内外网的设置方法(通过NetworkManager运行脚本)
国产良心操作系统deepin,界面好看,反应速度快,开箱即用,深度商店里有非常多好用的linux.windows软件,其windows软件通过crossover进行运行,还可以运行一些安卓的apk程序 ...
- 关于panic ,主协程的recover 是无法获取 子协程的panic 的
一.子协程的panic,只能在子协程中处理 下面的代码,main 函数 无法获取panic package main import ( "fmt" "time" ...
- P4491-[HAOI2018]染色【多项式,二项式反演】
正题 题目链接:https://www.luogu.com.cn/problem/P4491 题目大意 给\(n\)个物品染上\(m\)种颜色,若恰好有\(k\)个颜色的物品个数为\(S\)那么就会产 ...
- selenium--常用判断
获取页面 title 的方法可以直接用 driver.title 获取到,然后也可以把获取到的结果用做断言.1.首先导入 expected_conditions 模块:from selenium.we ...