网上方法千奇百怪,长篇大论看得心累,所以我希望三步之内解决这件事,那么开始吧。
你需要安装1.6.0以上的版本的 Docker 。
如果要使用域名绑定私有仓库,必须开启SSL。
生成下面文字即为成功:
克隆仓库。
编辑配置。
模板如下:
移动你的证书到 cert/ 目录。
备份一下原文件,使用https配置。
然后 vim nginx.conf ,要改的地方很少,如下:
没有问题的话已经运行起来了~~
现在你可以通过域名pull镜像了:
新建一个文件夹以便管理。
填写下面的内容到docker-compose.yml:
移动证书到自定义目录:
然后配置Nginx文件即可:
域名修改一下,复制粘贴即可。
现在你可以通过域名pull镜像了:
官方文档: Deploying a registry server
1.什么是Docker
借用下网上传统虚拟机与Docker的对比图片。
传统虚拟化应用程序中,不仅包含应用程序和必要的二进制文件库,还包含一个完整的操作系统。
而Docker容器仅包含应用程序和相关依赖项,在主机的操作系统用户空间中作为一个独立进程运行,与其他容器共享内核,从而实现了虚拟机的资源隔离和分配,具有更高的可移植性和效率提高。
2.为什么使用Docker
1.更快速的交付和部署
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接 使用这个容器来部署代码。
2.高效部署和扩容
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。
3.更高的资源利用率
Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
4.更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
3.Docker的工作原理和概念
自己制作镜像然后上传仓库或使用仓库已有的镜像文件拉取到容器中部署。
为了方便Docker的说明,本次例子使用虚拟机安装CentOS 7来演示。CentOS 7的安装请等查看下篇文章或自行百度。
1.安装之前的准备工作
按照顺序,执行如下操作
1、安装必要的一些系统工具
2、添加软件源信息
3、更新并安装Docker-CE
安装准备工作
2.开启Docker服务
运行docker version 如果出现以下情况,说明当前用户没有 root相关操作权限
无root权限
解决思路
先查看有多少镜像
运行docker run hello-world 测试命令,如果出现下方红框内消息,证明安装成功
3.查看docker基本信息和版本
1.构建Nginx基础镜像
查询nginx镜像
镜像拉取
查看对外的访问路径
怎么才能访问刚才启用的nginx
nginx页面内容
我们可以进入容器,看下这个容器是什么样子
查看nginx在哪个位置
我们发现尽管启动了nginx,但是在外部还是不能访问,这是因为docker具有隔离机制,要不然怎么叫做容器化部署呢
Docker内nginx端口
对Nginx进行外网端口映射;
2.构建Tomcat基础镜像
打开容器后,默认安装目录在 /usr/local/
3.创建自己的专属镜像
用Dockerfile来制作镜像
创建一个新的镜像,并起名字为nywlw
查看新的镜像
运行自己创建的容器
4.删除容器实例
5.删除镜像
每天发布更多新鲜有含量的技术文章、总有一款适合你。
前言
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的扩展
简单的说,TURN与STURN的共同点都是通过修改应用层中的私网地址达到NAT穿透的效果,异同点是TURN是通过两方通讯的“中间人”方式实现穿透。
ICE的全称Interactive Connectivity Establishment(互动式连接建立),由IETF的MMUSIC工作组开发出来的,它所提供的是一种框架,使各种NAT穿透技术可以实现统一。
STUN和TURN服务器和ICE可以参考阅读: P2P技术详解(三):P2P技术之STUN、TURN、ICE详解
本文介绍如何通过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和端口,分别测试两种协议服务是否生效
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)