首页服务器docker 服务器,使用docker搭建STUNTURN服务器

docker 服务器,使用docker搭建STUNTURN服务器

编程之家2023-10-22149次浏览

大家好,关于docker 服务器很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于使用docker搭建STUN/TURN服务器的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

docker 服务器,使用docker搭建STUNTURN服务器

使用docker搭建STUN/TURN服务器

前言

   STUN,首先在RFC3489中定义,作为一个完整的NAT穿透解决方案,英文全称是Simple Traversal of UDP Through NATs,即简单的用UDP穿透NAT。

    TURN,首先在RFC5766中定义,英文全称是Traversal Using Relays around NAT:Relay Extensions to Session Traversal Utilities for NAT,即使用中继穿透NAT:STUN的扩展  

docker 服务器,使用docker搭建STUNTURN服务器

    简单的说,TURN与STURN的共同点都是通过修改应用层中的私网地址达到NAT穿透的效果,异同点是TURN是通过两方通讯的“中间人”方式实现穿透。

   ICE的全称Interactive Connectivity Establ.shment(互动式连接建立),由IETF的MMUSIC工作组开发出来的,它所提供的是一种框架,使各种NAT穿透技术可以实现统一。

    STUN和TURN服务器和ICE可以参考阅读: P2P技术详解(三):P2P技术之STUN、TURN、ICE详解

docker 服务器,使用docker搭建STUNTURN服务器

  本文介绍如何通过DOCKER搭建STUN和TURN服务器,步骤如下

1:创建Dockerfile,内容如下:

FROM    ubuntu:14.04

MAINTAINER Patxi Gortázar<patxi.gortazar@gmail.com>

RUN apt-get update&& apt-get install-y\

  curl\

  libevent-core-2.0-5\

  libevent-extra-2.0-5\

  libevent-openssl-2.0-5\

  libevent-pthreads-2.0-5\

  libhiredis0.10\

  libmysqlclient18\

  libpq5\

  telnet\

  wget

RUN wget http://turnserver.open-sys.org/downloads/v4.4.2.2/turnserver-4.4.2.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz\

 && tar xzf turnserver-4.4.2.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz\

 && dpkg-i coturn_4.4.2.2-1_amd64.deb

COPY./turnserver.sh/turnserver.sh

ENV TURN_USERNAME test

ENV TURN_PASSWORD test

ENV REALM kurento.org

ENV NAT true

EXPOSE 3478 3478/udp

ENTRYPOINT ["/turnserver.sh"]

2:创建turnserver.sh,内容如下

#!/bin/bash

set-e

if[$NAT="true"-a-z"$EXTERNAL_IP"];then

#Try to get public IP

PUBLIC_IP=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)||echo"No public ip found on http://169.254.169.254/latest/meta-data/public-ipv4"

if[-z"$PUBLIC_IP"];then

PUBLIC_IP=$(curl http://icanhazip.com)||exit1

fi

#Try to get private IP

PRIVATE_IP=$(ifconfig|awk'/inet addr/{print substr($2,6)}'|grep-v 127.0.0.1)||exit1

exportEXTERNAL_IP="$PUBLIC_IP/$PRIVATE_IP"

echo"Starting turn server with external IP:$EXTERNAL_IP"

fi

echo'min-port=49152'>/etc/turnserver.conf

echo'max-port=65535'>>/etc/turnserver.conf

echo'fingerprint'>>/etc/turnserver.conf

echo'lt-cred-mech'>>/etc/turnserver.conf

echo"realm=$REALM">>/etc/turnserver.conf

echo'log-file stdout'>>/etc/turnserver.conf

echo"user=$TURN_USERNAME:$TURN_PASSWORD">>/etc/turnserver.conf

[$NAT="true"]&&echo"external-ip=$EXTERNAL_IP">>/etc/turnserver.conf

exec/usr/bin/turnserver"$@"

3:使用docker build创建镜像,执行结果如下

[root@www]# docker build-t teststurn_1.

Sending build context to Docker daemon  4.096kB

Step 1/11: FROM    ubuntu:14.04

---> 6e4f1fe62ff1

Step 2/11: MAINTAINER Patxi Gortázar<patxi.gortazar@gmail.com>

---> Using cache

---> 4460f9f84053

Step 3/11: RUN apt-get update&& apt-get install-y  curl  libevent-core-2.0-5  libevent-extra-2.0-5  libevent-openssl-2.0-5  libevent-pthreads-2.0-5  libhiredis0.10  libmysqlclient18  libpq5  telnet  wget

---> Using cache

---> 05ed9ced48a5

Step 4/11: RUN wget http://turnserver.open-sys.org/downloads/v4.4.2.2/turnserver-4.4.2.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz && tar xzf turnserver-4.4.2.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz && dpkg-i coturn_4.4.2.2-1_amd64.deb

---> Using cache

---> d82ed28fdac9

Step 5/11: COPY./turnserver.sh/turnserver.sh

---> Using cache

---> 1d37a488282c

Step 6/11: ENV TURN_USERNAME test

---> Running in bfd88f08db42

Removing intermediate container bfd88f08db42

---> cf8af0504b95

Step 7/11: ENV TURN_PASSWORD test

---> Running in b8ef33b7c213

Removing intermediate container b8ef33b7c213

---> 32a832f23169

Step 8/11: ENV REALM kurento.org

---> Running in bbe129edf5b3

Removing intermediate container bbe129edf5b3

---> 21fdfe34689b

Step 9/11: ENV NAT true

---> Running in 5bdfe8555d5e

Removing intermediate container 5bdfe8555d5e

---> dc7fc896841c

Step 10/11: EXPOSE 3478 3478/udp

---> Running in 67aaa1966f68

Removing intermediate container 67aaa1966f68

---> a12646ed45ff

Step 11/11: ENTRYPOINT ["/turnserver.sh"]

---> Running in b8fc2ff09265

Removing intermediate container b8fc2ff09265

---> f5e5acad0f81

Successfully built f5e5acad0f81

Successfully tagged teststurn_1:latest

执行完后可以看到自己创建的镜像名称为teststurn_1 

4:启动docker的镜像,并开启端口3478

    docker run-d-p 3478:3478-p 3478:3478/udp teststurn_1

  启动后需要等待一两分钟才能测试顺畅

5:测试服务器效果

  打开 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 并输入自己的本机IP和端口,分别测试两种协议服务是否生效

docker的好处,为什么使用docker来部署服务器

Docker的使用

Docker是一个轻量级的虚拟化解决方案,你可以实现秒级的虚拟机启动、非常轻量级的虚拟化。个人使用理解看来,它可以实现一个类似于版本管理Git一样的轻量化的状态保存。

Docker有两个非常重要的概念:镜像和容器。

镜像是呈载容器的实体,所有容器都是运行在镜像之上。用版本管理的角度来看,镜像就像是某一个节点,它可以派生出不同的分支,你可以在不同分支上做不同的事情。可以想象成一棵树,最基本的镜像是主树干,主树干可以分出旁支树干,而旁支树干可以分出更细的旁支,而树干上可以生长树枝。

比如,你使用Docker,从官方仓库下载一个ubuntu镜像,把它作为最基础的镜像。然后在上面运行一个容器,这个容器里下载Nginx,再以这个容器为基础生成一个新的镜像,以后这个镜像生成的容器就都是ubuntu+nginx为基础。但是你工作环境可能需要你使用Apache来工作,你也想有一个ubuntu+apache为基础的镜像,于是你可以使用最基础的ubuntu镜像运行一个容器,在里面下载安装Apache,然后以这个容器为基础,保存一个ubuntu+apache的镜像,以后在这个镜像基础上运行的所有容器都拥有了一个apache环境。

docker 搭建文件服务器

version:'3'//docker-compose版本 3.x

services: //服务的配置信息

    FileServer://自己定义的服务

        image: nginx:latest //使用的镜像名

        container_name:'FileData'// docker容器名

     restart: always//重启策略 always总是重新启动

        ports:-'8003:8003' //映射端口信息 宿主端口:容器端口

        volumes:// 定义了卷信息,提供给 services中的具体容器使用

            -'./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf'//用户自己指定的目录:映射目录

            -'./nginx/log:/var/log/nginx'

            -'./file:/usr/share/nginx/file'

            -'./web:/usr/share/nginx/html'  //其他html连接目录

        command:/bin/bash-c"nginx-g'daemon off;'" //覆盖容器启动后默认执行的命令

autoindex on;//是否显示文件目录 on显示  off关闭显示

autoindex_exact_size on;//显示文件确切大小 on显示字节单位 off 显示出文件的大概大小,单位是KB或者MB或者GB

autoindex_localtime on;//默认为off,显示的文件时间为GMT时间;改为on后,显示的文件时间为文件的服务器时间

charset utf-8,gbk;//显示的字符集

server{//服务配置

   listen 8003;//监听端口,也可以加上IP地址,如,listen 127.0.0.1:8080;

   server_name _;//定义网站域名,可以写多个,用空格分隔。

  //匹配规则,在server{}里可以有很多location配置段

  //root/alias是指定文件路径的两种方式 alias相当于重定向路径

    //使用alias,目录名后面一定要加“/”

    location/{//location后面跟的搜索路径

        root/usr/share/nginx/file;//指定文件服务地址这里的目录是 yml文件里配置的映射目录

    }

    location/web/{ 

     alias/usr/share/nginx/;//多个location的时候这里只需要指定映射目录的上级目录就行了

     index index.html index.htm;//配置默认首页

  }

}

文章分享结束,docker 服务器和使用docker搭建STUN/TURN服务器的答案你都知道了吗?欢迎再次光临本站哦!

usb打印服务器(哪个支持USB 打印机服务器的)查看服务器端口是否打开 如何远程查看服务器端口是否打开