概述

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构建过程的更多相关文章

  1. Docker容器构建过程的安全性分析

    来源:嘶吼专业版 ID:Pro4hou DevOps概念的流行跟近些年微服务架构的兴起有很大关系,DevOps是Dev(Development)和Ops(Operations)的结合,Dev负责开发, ...

  2. Docker学习(12) Dockerfile构建过程

    Dockerfile的构建过程 以上为构建缓存

  3. 使用Docker构建redis集群--最靠谱的版本

    1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...

  4. 使用Docker构建持续集成与自动部署的Docker集群

    为什么使用Docker " 从我个人使用的角度讲的话  部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...

  5. Dockerfile与Docker构建流程解读

    摘要 本文主要讨论了对docker build的源码流程进行了梳理和解读,并分享了在制作Dockerfile过程中的一些实践经验,包括如何调试.优化和build中的一些要点.另外,还针对现有Docke ...

  6. selenium结合docker构建分布式测试环境

    selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...

  7. 使用Spring Cloud和Docker构建微服务架构

    原文:https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do 作者:Alexander Lukyan ...

  8. 两种简单的方法Docker构建LANMP

    在初步入门学习Docker的过程中一步步了解了Docker容器在团队开发中所起到的作用,一边学习一边操作基本命令,当然到现在还处于一个擦边的入门阶段. 尝试一下用Docker构建一个集成开发环境. S ...

  9. Docker 构建映像

    .用docker commit构建映像 .docker run -i -t centos /bin/bash //启动一个容器,启动后默认进入该窗口的bash进程 .yum install -y ep ...

随机推荐

  1. PHP的switch和ifelse谁更快?

    对于多个if条件判断的情况下,我们使用switch来代替ifelse对于代码来说会更加的清晰明了,那么他们的效率对比呢?从PHP手册中发现有人已经对比过了,自己也用他的代码进行了实验: $s = ti ...

  2. 网络IO模型与Reactor模式

    一.三种网络IO模型: 分类: BIO 同步的.阻塞式 IO NIO 同步的.非阻塞式 IO AIO 异步非阻塞式 IO 阻塞和同步的概念: 阻塞:若读写未完成,调用读写的线程一直等待 非阻塞:若读写 ...

  3. [手机编程]Aid Learning--换源+数据库安装

    换源+MYSQL安装 Aid Learning下载安装 http://www.aidlearning.net/ 切换源 打开Terminal复制回车即可 cd /etc/apt/&& ...

  4. AVS 通信模块之AVSConnectionManager

    AVSConnectionManager 类为客户端无缝地管理与AVS的连接 功能简介 失败时连接重试 允许后续重新连接 ping管理 AVS服务器断开时周期重连服务器 允许客户端完全启用或禁用连接管 ...

  5. 深入浅出WPF-06.Binding(绑定)03

    MultiBinding(多路Binding) 当UI中的显示信息是由源Source中的多个数据来决定时,使用MultiBinding.他和Binding的区别是需要传递多个元数据,针对多个数据源需要 ...

  6. Sentry 监控 - 全栈开发人员的分布式跟踪 101 系列教程(第一部分)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  7. Java程序的执行过程

    Java程序的执行过程 编译器将 Java 源代码编译成字节码class文件 类加载到 JVM 里面后,执行引擎把字节码转为可执行代码 执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行

  8. 分布式应用开发 | SpringBoot+dubbo+zookeeper实现服务注册发现 | 远程服务调用

    前言 通过新建两个独立服务--提供者.消费者,模拟两个独立分布的应用,通过使用dubbo+zookeeper来实现远程服务调用. 目录 项目搭建 provider-server consumer-se ...

  9. hibernate不同条件查询结果集一样,主键@ID的原因

    这一周在翻新公司的老项目,遇到了一些预想不到的事情. 其中一个是,使用hibernate查询,不同的查询条件,居然都查到同一条记录,感觉奇怪了,开始以为是session的原因: 后来发现是hibern ...

  10. C# 提取PDF中的表格

    本文介绍在C#程序中(附VB.NET代码)提取PDF中的表格的方法,调用Spire.PDF for .NET提供的提取表格的类以及方法等来获取表格单元格中的文本内容:代码内容中涉及到的主要类及方法归纳 ...