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