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鏡像比較大,在網路上傳輸會比較慢,後期可以通過一些鏡像瘦身的技術降低文件大小,使得發布包更加好用。

 

 


 

空空如常

求真得真