Skip to main content

Asterisk on Docker



This Document covers asterisk basic installation on docker. Since till now there is no official asterisk image on Docker hub we will use Debian core to install the asterisk.


Prerequisites Linux host to install docker, Internet connectivity and docker account to download docker images.

1. Installing Docker (Ensure your Internet connectivity)


  • Centos 7

          #wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
          #rpm -ivh epel-release-latest-7.noarch.rpm
          #yum install docker



  •  Install Docker on RHEL and CentOS 6

         # yum install epel-release
         # yum install docker-io

2. Start Docker


  • Centos 7

         # systemctl start docker
         # systemctl status docker
         # systemctl enable docker

  •  On RHEL/CentOS 6


         # service docker start
         # service docker status
         # chkconfig docker on

Our Asterisk PBX will reside on Debain, So first we must set our Debian container to install asterisk. (Please ensure that you docker is up running without any issue, If you wish to verify you docker engine please use hello world application "# docker run hello-world" )
If everything went well as we expected, you will see something like this.


 3. Pull Debian Image to Docker

         # docker pull debian

This might take some time.

4. Now Lets run our New Debian container using pulled image

First we shall get the Debian image ID by using

            # docker images
 You will get someting like this (This will show your all docker images),


Now we shall Start our container using Our Debian image (My Debian image ID appears to be a20fd0d59cf1 )

       # docker run -it --name=<Container Name> --network=host <Image ID>

 

I've used -i and -t option to Keep STDIN open even when container is detached :i and to allocate  pseudo-TTY :t. Plus I've used --network option to connect my container with my host network.

After creating your Debian container you will be inside the Container.

5. Install Asterisk

Update your Debain distribution

       # apt-get update
Install asterisk

        # apt-get -y install asterisk
 This will take some time to install the packages.

Now After completion of the installation, we might configure the asterisk.

6. Asterisk Configuration

Configure the asterisk RTP Port Limitation.

       #vim /etc/asterisk/rtp.conf

(Use #apt-get install vim-nox To Install VIM)

Change rtpstart and rtpend parameters.


Save and Exit 
This will help us wo bind the ports when we running our Asterisk container. 
Now We shall start the asterisk.

       # /etc/init.d/asterisk start
Use # rasterisk to check if you can  access the Asterisk CLI.


Type exit and Hit Enter to exit Asterisk CLI

Now we shall commit our changes to keep our container configuration.

7. Committing the Container configuration


use Ctrl + p + q to detach from the container

Now issue docker ps  command to see running containers.


        # docker commit -m "<Commit Message>" -a "<author's name>" <ContainerID or Name to commit> <Repository>:<tag>


 Now you can check your committed Docker images by using # docker images

8. Run our Committed Image

        docker run -itd --name=PBX-Asterisk --network=host -p 5060:5060/tcp -p 5060:5060/udp -p 10010:10010/udp -p 10011:10011/udp -p 10012:10012/udp -p 10013:10013/udp -p 10014:10014/udp -p 10015:10015/udp -p 10016:10016/udp -p 10017:10017/udp -p 10018:10018/udp -p 10019:10019/udp -p 10020:10020/udp <Commited Docker ImageID to run>

 I've used the --name option to assign a name to my container, and use -p to map the container port with host port. 

9. Configure the sip peers 

Lets jump in to our asterisk container

You can use 

        # docker exec -it <Your Container ID> bash

or

         # docker attach <Your Container ID>

 Let's configure our sip peers in # vim /etc/asterisk/sip.conf

       [100]
       secrete=abc123
       context=home
       type=friend
       allow=ulaw,alaw
       host=dynamic

                                                      

10. Dialplan configuration 

11. Complete Asterisk configuration


Now we shall start the asterisk if we already haven't,

        # service asterisk start

Jump to Asterisk CLI

         # rasterisk
Reload the sip and dialplans

          localhost*CLI> sip reload
          localhost*CLI> dialplan reload

You can connect youe sip phones now.....

Note that, If you have iptables service aka firewalls up on your host machine you may need to do some changes accordance.

      Comments

      1. I have read all the comments and suggestions posted by the visitors for this article are very fine,We will wait for your next article so only.Thanks! asterisk pbx download

        ReplyDelete
      2. Asterisk On Docker >>>>> Download Now

        >>>>> Download Full

        Asterisk On Docker >>>>> Download LINK

        >>>>> Download Now

        Asterisk On Docker >>>>> Download Full

        >>>>> Download LINK UL

        ReplyDelete

      Post a Comment

      Popular posts from this blog

      Simple Squid (Proxy server) Configuration

      1.  SETUP THE INITIAL NETWORK CONNECTIVITY ON CENTOS After installing centos completely configured the network interfaces as follows, 1. Add a network interface to centos virtual machine as “Lan segment”(Centos lan) 2. And configure the ip address for that LAN segment If this centos machine has only one NIC we have to create two vlans and trunk them.             One to connect to the internet.            One to connect to the local area network interface which we created earlier 3. Using fedora(Another vm guest os) verify the network connectivity 4. Pinging to the LAN-segment that we created in order to verify the internet connectivity. Now we are connected to the private network that we created using centos earlier. Note that in this scenario centos is act as a router. So we are going to convert this centos virtual machine to router, in order to do that we nee...

      HAProxy

      HAProxy implementation Case Study This tutorial covers HAProxy Deployment on Firewall and SELinux enabled Centos7 systems. First of all lets get an overall idea about my situation.  I've bought a domain call mycompany.com so all of my  hosted sites should be followed by this main domain. As an example, if someone look for london.mycompany.com he should reach to London server, if someone look for chicago.mycompany.com he should reach to Chicago server So, I've created a Cloudflare account and point mycompany.com to our public IP address and created two                 CNAME entries from Cloudflare by adding London and Chicago. From the Cloudflare all the request to mycompany.com will forward to our public address and HAProxy may read those requests and Process them and forward them accordingly between two IIS servers. Note that al...

      Asterisk Gateway Interface - Perl

      Asterisk Gateway Interface 1. What is Asterisk Gateway Interface?  In simple word AGI is Language Independent API to programmers to control the call flow on their Asterisk PBXs. Asterisk provides more than its own dial-plan, to control to the call flow or lets say call logics. So which means you may use either one of Dialplan Asterisk Manager Interface (AMI) Asterisk Gateway Interface (AGI) to manipulate your call logics. Before we move on to AGI lets briefly discuss about each one of above, Dialplan Dial plan is Asterisk native call logics performer, it's fast, easy to learn and efficient. But this configuration script is more closer to assembly program (If you have any previous experience on assembly), the main drawback of the Asterisk Dialplan in it's lack of support on standard procedural  language as an example when you want create a loop.  Any way in the following tutorials we will only discuss about the AGI, But we can't av...

      FreePBX-Installation

      FreePBX-Installation 1. Pre-installation In order to setup call center server first we have to confirm that our system is full filled the minimum requirements. This asterisk deployment is based on RedHat distribution aka CentOS.  To full-fill the above requirement we are going to setup asterisk 11 on CentOS 6.5 (x64). 1.2 CentOS 6.5x64 installation  It is recommended to install CentOS 6.5x64 minimum version and manually install all the other package as our requirement.  At the beginning it recommended to configure the logical disk drives aka Raid.  Note that some of the server-rigs will not compatible to centos 6.5x64, most of the time it’s because the particular server’s Raid drivers might not be found in centos 6.5x64 disk. In such scenario please follow the below instruction. First we have to download the Raid driver from relevant vendor. (If it’s HP you will find somewhat like this hpvsa-X.X.X-X.rhel6u.5x86_64.dd). ...

      Discussion : SIP vs BRI/PRI

      SIP SIP standards for Session Initiation Protocol and It's Purely IP based.  BRI/PRI PRI stands for Primary Rate Interface and It contains One 64Kbps T1 or E1 Chanel for Signaling AKA Channel D and 23 T1 or 30 E1 Channels as Bearing Chanel aka Channel B.\ BRI standards for Basic Rate Interface and Contain Two Barer channel and One Signaling Chnnel AKA 2B+D. Further Both Both PRI and BRI are ISDN services and also data rate of PRI is 2.048Mbps while 128-144Kbps. ISDN : Integrated Service Digital Network / It's Some Dumb Network SIP vs BRI/PRI SIP does Best effort Delivery as same as IP traffic do, while BRI/PRI Provide QoS. If someone requires to attain QoS through SIP something like MPLS will do with a considerable amount cost. SIP is more flexible than BRI/PRI because it can be accommodated by company existing data network while BRI/PRI reuires to have a dedicated link for it self.

      RHEL Recover your root Password

      Root Password recovery In this tutorial I will demonstrate you how to recover you lost password. This tutorial is for RHEL 7 Password recovery. Before we go further I would like to brief Linux boot process, When pushed power button your PC/Server it will powered on and the system firmware will runs POST (Power On Self Test) which will check and initiate attached hardware. You can do modifications to these process by BIOS/UFFI configuration After POST, system firmware will look for bootable device in other words it look for Master Boor Record (MBR) Then the System will reads the boot loader from the disk and let boot loader to take control of the system Now the boot loader loads its configuration from disk, at that point you may display the boot options Depends on your selection boot loader will load the kernel and initramfs from disk to you memory(RAM). Initramfs  is some gziped archive contains kernel modules for hardware all hardware w...

      Perl - Database Transactions

      Database Transactions with Perl To understand what is a database transaction lets look at a simple bank withdrawal and deposit scenario. Assume that you have two bank accounts call A and B, and you need withdraw some amount from account A and Deposit it on account B. In this scenario what happen if you couldn't withdraw money from your account A, the deposit part won't carry out. Again if you couldn't deposit the money to your account B you have to deposit them back on account A (Which means a roll back). So in the  context of Database, Transaction is refer to  a sequence of jobs which is supposed to run as a whole. So in other words, it should happen as whole or not. So as in our following example, we have 3 Database queries which should perform as a whole. Further assume that our first Database query is supposed to perform a insert if successful, second query  should update a table if successful, third query  should delete an entry from a ...

      Share-A-Directory-between-two-server-NFS

      Share-A-Directory-between-two-server-NFS Please grant the relevant permission on the shell scripts ./client_Export.sh Takes three argument as follows 1. server ip address to be exported 2. client directory which should be exported to the particular server 3. options aka permission for the expoted folder rw: This option allows the client server to both read and write within the shared directory sync: Sync confirms requests to the shared directory only once the changes have been committed. no_subtree_check: This option prevents the subtree checking. When a shared directory is the subdirectory of a larger filesystem, nfs performs scans of every directory above it, in order to verify its permissions and details. Disabling the subtree check may increase the reliability of NFS, but reduce security. no_root_squash: This phrase allows root to connect to the designated directory E...