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 ...
随机推荐
- linux centos windows服务器修改数据库最大连接数的方法
1.可查询数据库最大连接数 show variables like '%max_connections%'; 2.修改数据库最大连接数,最大限制上限为16384. 找到数据库配置文件my.cnf,在配 ...
- mac的vssh用sftp连不上,报unexpected SSH2_MSG_UNIMPLEMENTED packet
- ecshop调用商品的购买次数方法
这时候我们修改一下 写成一个函数放到lib_goods.php 这样就可以随便调用了 --------------------------------------------------------- ...
- Xshell和Xftp - 下载安装
简介 Xshell 实际工作运用:连接Linux Xftp 实际工作运用:传输文件到Linux系统 下载安装 三连后评论区留言私发,此贴长期有效!!!
- Shell系列(23)- 字符截取命令sed
简述 字符替换命令sed 和vi功能相似,但是vi是给用户用的,sed是给脚本用的 sed是一种几乎包括在所有的UNIX平台(包括Linux)的轻量级流编辑器.s sed主要是用来将数据进行选取.替换 ...
- Github新手入门
git入门项目:https://guides.github.com/activities/hello-world/ 创建存储库 创建一个分支 进行并提交更改 打开拉取请求 合并您的拉取请求
- CI框架 core
https://blog.csdn.net/admin_admin/article/details/51769805 1.扩展控制器 1.在application/core新建一个自己的控制器(MY_ ...
- Python - Context Manager 上下文管理器
什么是上下文管理器 官方解释... 上下文管理器是一个对象 它定义了在执行 with 语句时要建立的运行时上下文 上下文管理器处理进入和退出所需的运行时上下文以执行代码块 上下文管理器通常使用 wit ...
- P5363-[SDOI2019]移动金币【阶梯博弈,dp,组合数学】
正题 题目链接:https://www.luogu.com.cn/problem/P5363 题目大意 \(1\times n\)的网格上有\(m\)个硬币,两个人轮流向前移动一个硬币但是不能超过前一 ...
- "错误: 找不到或无法加载主类"解决办法
前言:记上次一个找了个把小时的问题(很烦这些配置) 原因: 从svn下checkOut的项目 在application的配置的输出class路径为main,而class文件路径是在项目名的根路径下,所 ...