前言
成都创新互联公司是少有的网站建设、网站设计、营销型企业网站、小程序开发、手机APP,开发、制作、设计、买友情链接、推广优化一站式服务网络公司,从2013年成立,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评我们将应用以Docker容器的方式部署到服务器上的时候,通常需要考虑两个方面的的问题:网络和存储。
网络方面,有些应用需要占用端口,而其中一部分应用甚至需要对外提供访问。
出于安全方面考虑,代理转发方式相对于直接开放防火墙端口方式更为合适。
存储方面,由于容器内部并不适合做数据持久化,所以一般通过挂载卷的方式将数据保存在服务器磁盘上。
但是服务器也不能保证绝对安全,所以数据也需要备份到云上。
代理转发
默认情况下容器之间的网络是互相隔离的,但是对于一些有关联的应用而言(web前端容器和服务端容器以及数据库容器),一般会把它们划分到一个独立的桥接子网络(以下简称子网),使得这些容器之间可以相互通信,但同时又与外部进行隔离。
对于需要对子网外部提供访问的容器,可以将端口映射到服务器主机上。整个结构大致如下:
上面的端口映射只解决了服务器(宿主机)访问容器网络服务的问题,如果我们要从本地机器上通过因特网访问服务器上的容器,一般是不行的,因为服务器除了安全考虑,默认情况下会启用防火墙,并只开放22等少数几个端口。
对于传统的网络进程,实现方式就是通过反向代理服务器来对网络请求进行转发,比如使用Nginx配置如下代理:
# 针对不同路径进行转发 server { listen 80; server_name www.xx.com; location /a { proxy_pass localhost:1234; } location /b { proxy_pass localhost:2234; } } # 针对不同域名进行转发 server { listen 80; server_name www.yy.com; location / { proxy_pass localhost:1234; } }